In a POSIX shell, I actually prefer to use the bell character for IFS.
while IFS="$(printf \\a)" read -r field1 field2...
do ...
done
This works just as well as anything outside the range of printing characters.Getting records that contain newlines would be a bit trickier.