I've tested against several different tables and it seems to be pretty solid. I did have some data with chr codes beyond 127. The deserializer turns those into question marks. Will this not support those characters?
(example: Change the name field in your example to chr(150) + chr(146), the n-dash I think and single apostrophe. The returned values for name becomes "??".)
Also, a blank memo field with just a return in it (chr(13) + chr(10)) gets turned into a empty string.