我正在尝试在 cmd.exe 上使用 subversion 提交修订。cmd.exe 的代码页是 utf-8(用 设置chcp 65001
):
c:\path\to\work\dir> svn ci
由于我没有指定带有-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 格式。
我也尝试将其存储在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..
注意第一个字符(ü
后跟\x0d\x0a
)。被ü
编码为c3 bc
utf-8 表示LATIN SMALL LETTER U WITH DIAERESIS(见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 上,并不这么认为。只要我可以提交一个ü
和其他德语特殊字符,我就不会关心我需要以什么格式提交消息。