hvr*_*hvr 5 haskell character-encoding latin1
由于latin-1(又名ISO-8859-1)字符集嵌入Unicode字符集中作为其最低的256个代码点,我希望转换是微不足道的,但我没有看到任何拉丁语-1编码转换函数,Data.Text.Encoding其中仅包含常见UTF编码的转换函数.
Data.ByteString在latin-1表示和Data.Text值中编码的值之间进行转换的推荐和/或有效方法是什么?
ham*_*mar 13
答案就在您链接的页面顶部:
要访问更大的编码系列,请使用以下
text-icu软件包:http://hackage.haskell.org/package/text-icu
快速GHCi示例:
?> import Data.Text.ICU.Convert
?> conv <- open "ISO-8859-1" Nothing
?> Data.Text.IO.putStrLn $ toUnicode conv $ Data.ByteString.pack [198, 216, 197]
ÆØÅ
?> Data.ByteString.unpack $ fromUnicode conv $ Data.Text.pack "ÆØÅ"
[198,216,197]
Run Code Online (Sandbox Code Playgroud)
但是,正如您所指出的,在latin-1的特定情况下,代码点与Unicode重合,因此您可以使用pack/ unpackfrom Data.ByteString.Char8从latin-1执行简单的映射String,然后您可以将其转换为Text使用对应pack/ unpack来自Data.Text.