Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 字符编码问题_C_Encoding_Character Encoding - Fatal编程技术网

C 字符编码问题

C 字符编码问题,c,encoding,character-encoding,C,Encoding,Character Encoding,我最近编辑了一个Unicode编码的文本文件,其中还包括泰语字符(以及“普通”字符)。出于某种原因,在每一个泰国字符序列之后,都会出现一行新的字符 在使用C进行了一些修改,试图删除所有的换行符之后,我启动了vim来检查文件。显然,在每个泰语字符序列之后,都会出现一个“^M”字符串(不带引号) 为什么会发生这种情况,以及“^M”是什么?我发现我可以通过删除泰文字符串中的最后三个字符来解决这个问题,但肯定有更优雅的方法来解决这个问题…这与文件中有一些泰文字符无关。^M(“carrot M”)是Mic

我最近编辑了一个Unicode编码的文本文件,其中还包括泰语字符(以及“普通”字符)。出于某种原因,在每一个泰国字符序列之后,都会出现一行新的字符

在使用C进行了一些修改,试图删除所有的换行符之后,我启动了vim来检查文件。显然,在每个泰语字符序列之后,都会出现一个“^M”字符串(不带引号)


为什么会发生这种情况,以及“^M”是什么?我发现我可以通过删除泰文字符串中的最后三个字符来解决这个问题,但肯定有更优雅的方法来解决这个问题…

这与文件中有一些泰文字符无关。
^M
(“carrot M”)是Microsoft(DOS)回车的表示形式。在vim中编辑之前要清除这些内容的文件。

很可能是文件编码问题。Unix和Windows对换行有不同的约定。您的C代码是否使用
\r
?它是以文本模式还是二进制模式打开文件?我的C代码使用\n。原始文件是UTF-8编码的。没有换行符是有问题的,只有外国字符造成了问题(正如我刚刚意识到的,中国字符也是如此)。。。