On 12-08-31 01:59 AM, jeff p wrote:
I have a sample file (attached) which I cannot read into Text:

     Prelude Control.Applicative> Data.Text.IO.readFile "foo"
     *** Exception: utf8.txt: hGetContents: invalid argument (invalid
byte sequence)

     Prelude Control.Applicative> Data.Text.Encoding.decodeUtf8 <$>
Data.ByteString.Char8.readFile "foo"
     "*** Exception: Cannot decode byte '\x6e':
Data.Text.Encoding.decodeUtf8: Invalid UTF-8 stream

At offsets from 0x55 to 0x5A:

0x4D 0x61 0x72 0x74 0xED 0x6E

This is clearly not UTF-8. This would be, in ISO-8859-1, "Martín".

"Martín" in UTF-8 is 0x4D 0x61 0x72 0x74 0xC3 0xAD 0x6E, and it takes one more byte.

And like Gregory Collins says, different UTF-8 decoders may handle errors differently. Some abort. Some others fill in a special character.


_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to