如何使用utf-8消息文件?

Ren*_*ger 5 svn vim cmd utf-8 internationalization

我试图在cmd.exe上提交subversion版本.cmd.exe的代码页是utf-8(设置为chcp 65001):

c:\path\to\work\dir> svn ci
Run Code Online (Sandbox Code Playgroud)

由于我没有使用该-m标志指定消息,并且该变量SVN_EDITOR设置为gvim,因此gvim打开,我可以输入我的消息.我将文件保存为utf-8(:set filencoding=utf8)并退出编辑器.

现在,svn客户端(?)告诉我:( Auf ... .folgte ein nicht-ASCII Byte 195, das nicht von/nach UTF-8 konvertiert werden konnte我相信英语是:检测到非ASCII字符(代码%d),无法转换为UTF-8 /从UTF-8转换).

这很奇怪,因为我非常确定我存储的消息文件是UTF-8格式.

我也尝试将它存储在latin-1中,但效果相同.

编辑

我对这条消息进行了测试ü.文件的十六进制内容是

0000000: c3bc 0d0a 2d2d 2044 6965 7365 2075 6e64  ....-- Diese und
0000010: 2064 6965 2066 6f6c 6765 6e64 656e 205a   die folgenden Z
0000020: 6569 6c65 6e20 7765 7264 656e 2069 676e  eilen werden ign
0000030: 6f72 6965 7274 202d 2d0d 0a0d 0a41 2020  oriert --....A
0000040: 2020 780d 0a                               x..
Run Code Online (Sandbox Code Playgroud)

请注意第一个字符(ü后跟\x0d\x0a).在ü被编码为c3 bc这对于UTF-8表示带分音符的拉丁小写字母U(参见UTF-8表),其被期望的ü.

另请注意,错误消息(在这种新情况下Ein Nicht-ASCII Zeichen (Kode 195) wurde gefunden, das nicht von/nach UTF-8 konvertiert werden konnte:)会抱怨195(对于c3文件中的第一个字节,这是十进制的).当然,错误信息是正确的:它不是ASCII字符,但这不是使用utf-8文件的全部意义吗?

编辑2

我尝试以UTF-8格式提交消息,因为这是我认为最自然的事情.显然,SVN,至少在cmd.exe上,并不这么认为.我可以不关心我需要提交消息的格式,只要我可以提交一个ü和其他德国特殊字符.

Ben*_*Ben 5

看起来该svn commit命令实际上接受一个参数来告诉SVN您的提交消息所处的编码.尝试svn commit --encoding UTF-8.

http://svnbook.red-bean.com/en/1.7/svn.ref.svn.html说:

- 编码ENC

告诉Subversion您的提交消息是使用提供的字符编码组成的.默认字符编码源自操作系统的本机区域设置; 如果您的提交消息是使用任何其他编码组成的,请使用 此选项.