Internationalization UTF-8 i18n文件

Internationalization UTF-8 i18n文件,internationalization,yesod,Internationalization,Yesod,我试图在搭建的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 charac

我试图在搭建的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)
我将这两个消息文件更改为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字符。这显然有点了不起。)

当我去提交我的更改时,我发现了这个问题。我的英文文件的差异如下所示:

-Hello: Hello
+<U+FEFF>Hello: Hello
-你好:你好
+你好:你好
我猜记事本把这个字符加进去了,然后它就进入了Haskell代码。我用vim解决了这个问题

-Hello: Hello
+<U+FEFF>Hello: Hello