我在Windows上使用vim和gVim,在虚拟Linux环境中编程时使用vim。我经常需要更改gettext目录文件。然而,由于字符集的原因,两个Windows版本的Unicode字符支持似乎不完整。
例如,umlauts(äöü)可以正常工作;但是排版引号(„“或“ˮ)和一些其他字符,如mdash和ellipse则不能(它们在Linux box中可以)。 Vim会报告转换错误并以只读模式打开文件;即使覆盖并存储,这些字符也会破坏。
其他Windows程序可以很好地支持这些字符,例如TortoiseSVN。
请注意,这不是“错误编码”问题,比如latin-1而不是utf-8,因为这也会影响umlauts。我知道设置enc,fenc,fencs和:e ++enc=utf-8。
:version告诉我:版本7.3,MS Windows 32位GUI版本w/OLE支持,包括修正1-46;+multi_byte_ime/dyn。
更新:升级到Vim 7.4并没有解决问题。+multi_byte_ime/dyn,并且,由于选项现在列出得更容易阅读,
由于我使用Linux Vim(仍为7.3,包括修正1-547)和通过Samba更新的Windows gVim在相同的文件上工作,因此我尝试了以下操作:使用Linux版本打开目录文件,它可以正确处理有趣的引号字符(:set enc?fenc?→encoding=utf-8,fileencoding=utf-8),并将其保存为Latin-1(:set fenc=latin-1(文件标记已更改),更新标记,:w)。我得到了转换错误;但是,一些更改已被写入。
当使用相同的Linux版本重新打开文件时,我得到了正确的umlauts,encoding=utf-8/fileencoding=latin-1,但引号字符不正确。
例如,umlauts(äöü)可以正常工作;但是排版引号(„“或“ˮ)和一些其他字符,如mdash和ellipse则不能(它们在Linux box中可以)。 Vim会报告转换错误并以只读模式打开文件;即使覆盖并存储,这些字符也会破坏。
其他Windows程序可以很好地支持这些字符,例如TortoiseSVN。
请注意,这不是“错误编码”问题,比如latin-1而不是utf-8,因为这也会影响umlauts。我知道设置enc,fenc,fencs和:e ++enc=utf-8。
:version告诉我:版本7.3,MS Windows 32位GUI版本w/OLE支持,包括修正1-46;+multi_byte_ime/dyn。
更新:升级到Vim 7.4并没有解决问题。+multi_byte_ime/dyn,并且,由于选项现在列出得更容易阅读,
+digraphs
,-xfontset
,-postscript
(我不知道它们是否有用)。由于我使用Linux Vim(仍为7.3,包括修正1-547)和通过Samba更新的Windows gVim在相同的文件上工作,因此我尝试了以下操作:使用Linux版本打开目录文件,它可以正确处理有趣的引号字符(:set enc?fenc?→encoding=utf-8,fileencoding=utf-8),并将其保存为Latin-1(:set fenc=latin-1(文件标记已更改),更新标记,:w)。我得到了转换错误;但是,一些更改已被写入。
当使用相同的Linux版本重新打开文件时,我得到了正确的umlauts,encoding=utf-8/fileencoding=latin-1,但引号字符不正确。
utf-8
(并且文件格式相同),就不需要进行转换,因此也不会出现这样的错误。 - Ingo Karkatutf-8
编码,特别是gettext目录(.po
)。对于这些文件,编码包含在“Content-Type”头中(并用于编译为.mo
文件)。 - Tobias