我正在尝试将一个中文本地化添加到一个脚手架的Yesod网站。我在Windows中使用记事本将zh.msg
消息文件保存为UTF-8格式,但是当我在项目目录中运行cabal install
时,我得到了这个:
Handler\Home.hs:15:11:
Not in scope: data constructor `MsgHello'
Perhaps you meant `Msg<stderr>: hPutChar: invalid argument (invalid character)
有问题的线是我渲染主页的地方:
$(widgetFile "homepage")
我将两个消息文件都更改为Unicode格式而不是UTF-8,并改为收到此消息:
Foundation.hs:1:1:
Exception when trying to run compile-time code:
Cannot decode byte '\xff': Data.Text.Encoding.Fusion.streamUtf8: invalid UTF-8 stream
所以我猜UTF-8就是这样......不知何故。
(我正在使用记事本,因为我没有设置gVim来渲染Unicode字符。这显然有点壮观。)
答案 0 :(得分:0)
当我去改变时,我发现了这个问题。我的英文文件的差异如下所示:
-Hello: Hello
+<U+FEFF>Hello: Hello
我猜记事本添加了字符,它正在进入Haskell代码。我用vim according to this answer解决了它。