[Haskell-cafe] Data.Text UTF-8 question

Albert Y. C. Lai trebla at vex.net
Fri Aug 31 22:31:26 CEST 2012

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.

More information about the Haskell-Cafe mailing list