【发布时间】:2013-12-21 07:52:05
【问题描述】:
我希望使用Data.Text 的 IO 功能获取输入文本。我的困惑与编码发现有关。也就是说,如果我事先不知道文本的编码,那么在正在读取的文本的编码与系统区域设置不同的情况下,Data.Text 中的 IO 有什么用处? Data.Text某处是否有编码发现机制?
我知道我可能会收到一堆回复说“使用Data.ByteString”,但创建Data.Text 的目的不是为了避免使用Data.ByteString 来阅读文本吗?
另外,如果我必须使用Data.ByteString,有谁知道读取八位字节 0x80 到 0x9f 时会发生什么?他们是否像其他输入一样按预期读入?它们在 ISO-8859-1 中未定义,Data.ByteString 的 IO 似乎表明输入被视为源是 ISO-8859-1。
【问题讨论】:
-
“Data.Text 中是否有编码发现机制?” No.
-
您在哪里看到表明输入 ByteString 会将输入视为 ISO-8859-1 的内容?
-
在 [Data.ByteString](hackage.haskell.org/package/bytestring-0.10.4.0/docs/…) 的规范中 - 也存在于其惰性和 char8 变体中 - 在 hGetContents 的定义下
-
嗯。我不明白那句话,我想知道它是否错误/过时。我希望以二进制模式打开文件根本不会导致编码更改。
标签: haskell character-encoding io