我很确定GHC在前一段时间内添加了在Handle
上明确设置字符编码的功能。但是,当我查看System.IO
时,我看不到与字符编码有关的任何内容。 (我有Haskell Platform 2012.4.0.0)
我是盲目的,还是只是弄错了?
答案 0 :(得分:2)
我调查了函数隐藏的位置。
摘要:确保使用包基础中的System.IO
,而不是包haskell2010。
详细信息:Hoogle告诉我最新基础包中有System.IO.hSetEncoding
。
检查有关Haskell平台2012.4.0.0的文档,我看到System.IO
包中的haskell2010
模块。该模块似乎不包含hSetEncoding
。
但不要绝望,似乎还有来自System.IO
的{{1}}包含hSetEncoding
。
所以我想你必须确保你使用的是System.IO
,而不是来自haskell2010。
答案 1 :(得分:1)
天啊!
好的,我只想出来了。
System.IO
- base
软件包和haskell2010
软件包。base
的模块中包含所有字符编码内容。System.IO
中包含的haskell2010
版本 - 没有所有字符编码内容。从base
看到版本的唯一方法是点击从base
导出的其他模块,然后点击“内容”,然后从那里导航到System.IO
。 然后它会显示正确的模块!
反直觉,多吗? O_O
好的,所以我现在找到了我的功能,但是男人,Haddock应该可以更好地处理这个不起眼的边缘情况......