5

由于 latin-1(又名 ISO-8859-1)字符集作为其最低的 256 个代码点嵌入在 Unicode 字符集中,我希望转换很简单,但我没有看到任何 latin-1 encoding 转换函数,Data.Text.Encoding其中仅包含常见 UTF 编码的转换函数。

Data.ByteString在以 latin-1 表示形式编码的值和值之间进行转换的推荐和/或有效方法是Data.Text什么?

4

1 回答 1

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]

但是,正如您所指出的,在 latin-1 的特定情况下,代码点与 Unicode 一致,因此您可以使用pack/ unpackfromData.ByteString.Char8执行从 latin-1 from/to 的简单映射String,然后您可以Text使用对应pack/unpack来自Data.Text

于 2011-09-25T11:27:00.687 回答