2

我正在测试一些喜欢将内容输出到文件的东西,它有一个中文名称。

该文件将成功创建,内容正确,但文件名不正确。

我看一下函数writeFile^1,它使用 . 表示文件名String。所以我怀疑这可能是根本原因。

    file :: FilePath
    file = "上海万达影城.html"

    content :: String
    content = "<h1>hello</h1>"

    write2File :: IO ()
    write2File = writeFile file content

谢谢你的帮助!

-西蒙

- - - - - - - - - - - 更新

  1. 我身边的 GHC 是 7.0.2
  2. 升级前找到的解决方法。请参阅下面的详细信息,代码更改如下

    import qualified Codec.Binary.UTF8.String as UTF8
    file = UTF8.encodeString "上海万达影城.html"
    
4

2 回答 2

3

String 是 Haskell 中的 unicode 代码点列表。该 unicode 代码点列表的解释取决于系统。(您还需要一个不太旧的 GHC 来支持这一点)。

不过,一般来说,一旦您正确设置了区域设置,一切都会正常工作。


注意过去有一些警告——例如旧错误:System.Directory.getDirectoryContents unicode 支持——这可能涉及变通方法。

于 2012-04-17T12:30:47.647 回答
0

同时,您可以使用该System.Posix.IO.ByteString模块。这将允许您将文件路径指定为字节字符串,因此您可以自己进行编码/解码。

这是一个已知错误,已在 7.2.1 中修复。

http://hackage.haskell.org/trac/ghc/ticket/3307

于 2012-04-17T12:32:54.523 回答