X'0B' ist chr(11) und nicht chr(12).
Normalerweise sind diese Zeichen nicht relevant sondern dienen nur der optischen Darstellung.
Insoweit gebe ich Dieter Recht, dass es beim Lesen auf das Encoding ankommt.
Dieses steht meistens direkt am Anfang der Datei mit z.B. Encoding="iso 8859-1".
Entsprechend muss der Datenstrom gelesen werden, ansonsten wird binär gelesen und das passt ggf. gar nicht.

Ich helfe mir meist damit, dass ich die ersten Zeilen selber lese, das Encoding suche und einen entsprechenden Textencoder wähle bevor ich die Datei an den Parser weitergebe.

Alternativ kann man ja auch erst mal als Default 8859-1 wählen, das Encoding-Attribut auslesen und bei Abweichung halt noch einmal mit einem anderen Encoder lesen.