gpt4 book ai didi

haskell - GHC 中的字符编码问题

转载 作者:行者123 更新时间:2023-12-04 03:07:40 24 4
gpt4 key购买 nike

当我尝试从我的 Haskell 程序中读取纯文本文件时,我得到:

[fromList * 异常:/path/to/file/aaa.txt hGetContents:无效参数(无效或不完整的多字节或宽字符)

我用谷歌搜索发现这个问题通常通过将 LANG 设置为 en_US.UTF-8 来解决这就是我的语言环境的样子。

完全不确定这是否是 GHC 的问题。

我在 Ubuntu 11.10 上

最佳答案

您确定 aaa.txt 包含有效的 UTF-8 编码吗?如果是二进制数据,则需要使用withBinaryFile或类似的。如果它是另一种编码的文本,你应该使用 hSetEncoding .

例如,如果您的文本是 Latin-1,那么您会说

hSetEncoding h latin1

其中“h”是您的文件句柄。如果您正在从标准输入读取,那么它是

hSetEncoding stdin latin1

还有一个mkTextEncoding如果您已从元数据中读取编码,或希望自定义处理无效 Unicode(尽管这仅适用于某些系统),则可以使用该函数。

Unicode 标准规定 Unicode 解析器应该拒绝带有错误的无效字符串,而不是尝试修复它们。这是故意拒绝Postel's Law ,以减少安全漏洞和不一致的解释为由。

(如果您要处理大量文本并且必须处理编码问题,您可能需要考虑使用 text 库;它通常比使用字符串快很多,因为它使用未装箱的数组而不是一个链表,尽管这意味着 Text 值和对它们的操作必须是严格的。它还允许您更便携和灵活地配置 how to respond to invalid Unicode。)

关于haskell - GHC 中的字符编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8572516/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com