2010-03-05 104 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中編輯之前擺脫這些。