Chinese Tag In Hakyll
此问题发生在 GHC < 7.2.x 的环境,据说 7.2.x 已经修正了造成此原因的 bug(未验证)。
1. 问题
Hakyll1会给每个标签单独生成一个 html,比如/foo.html/, 用来显示标签对应的所有文章。 然而当标签为中文时,文件名会是乱码,而非对应的中文标签名。
2. 原因
造成问题是原因由于 Haskell 里写文件的方法。 如下所是, writeFile
用base 库里的 String
类型表示文件名, 这就限制其只能表示 ASC-II 字符集。
│ type FilePath = String │ │ writeFile :: FilePath -- ^ 文件名 │ │ │ -> String -- ^ 要写到文件的内容 │ │ │ -> IO ()
3. 一种解决办法
4. 再一种解决办法
hakyll google groups 有人帖了他的一个解决方案,也是用 utf8-string 先 encode,但修改的地方不一样。详见此4。