【发布时间】:2011-09-25 10:23:52
【问题描述】:
由于 latin-1(又名 ISO-8859-1)字符集作为其最低 256 个代码点嵌入到 Unicode 字符集中,我希望转换很简单,但我没有看到任何Data.Text.Encoding 中的 latin-1 编码转换函数,其中仅包含常见 UTF 编码的转换函数。
在以 latin-1 表示形式编码的 Data.ByteString 值和 Data.Text 值之间进行转换的推荐和/或有效方法是什么?
【问题讨论】:
-
顺便说一句,“由于 latin-1 字符集作为其最低 256 个代码点嵌入在 Unicode 字符集中,我希望转换是微不足道的”的假设是没有根据的.没有理由期望以两种不同的编码方式对单个代码点流进行编码所产生的字节流彼此之间应该存在微不足道的关系。
-
@DanielWagner:是的,我知道在一般情况下我不应该期望这种情况(例如,如果
Data.Text使用 utf8 作为其内部 Unicode 表示),但当前版本的Data.Text库使用 UTF16 表示,从 latin1 转换实际上是一个简单的转换,包括在每个 latin1 八位字节之后或之前(取决于是否需要 UTF16LE 或 UTF16BE)插入零八位字节。
标签: haskell character-encoding latin1