Quotes are a non-issue. The classic problem is that we can't tell apart newlines that are part of filenames, and newlines that separate filenames; however, recent coreutils ls provides an alternate format where this is not an issue.
It's not pretty, and it shouldn't be done but it's doable (in many shells, but none of this is specified in POSIX):
ls --quoting-style=shell-escape-always | while read -r escaped; do
eval "filename=$escaped"
echo "'$filename'"
done