2010-03-05 75 views
1

我最近正在编辑一个Unicode编码的文本文件,它还包含泰文字符(与“普通”字符一起)。出于某种原因,在每个泰国字符序列之后,出现了一个新的行。字符编码问题

经过一番与C混为一谈,试图删除所有换行符,我启动了vim来检查文件。显然,在每个泰语字符序列之后,会出现一个“^ M”字符串(不含引号)。

为什么会发生这种情况,那是什么“^ M”?我发现我可以通过从泰语字符串中删除最后三个字符来解决问题,但肯定必须有一种更加优雅的方式来修复此问题...

+0

最有可能的是它的一个文件编码问题。 Unix和Windows对换行符有不同的约定。你的C代码是否使用'\ r'?它是否以文本模式或二进制模式打开文件? – 2010-03-05 21:49:58

+0

我的C代码使用\ n。原始文件是UTF-8编码的。没有换行字符是有问题的,只有外来字符产生问题(中文字符也是,我刚才意识到)... – ryyst 2010-03-05 21:54:50

回答

0

这与您的事实无关在文件中有一些泰文字符。 ^M('胡萝卜M')是Microsoft(DOS)回车的代表。 Dos2unix该文件在vim中编辑之前摆脱这些。