1
我最近正在編輯一個Unicode編碼的文本文件,它還包含泰文字符(與「普通」字符一起)。出於某種原因,在每個泰國字符序列之後,出現了一個新的行。字符編碼問題
經過一番與C混爲一談,試圖刪除所有換行符,我啓動了vim來檢查文件。顯然,在每個泰語字符序列之後,會出現一個「^ M」字符串(不含引號)。
爲什麼會發生這種情況,那是什麼「^ M」?我發現我可以通過從泰語字符串中刪除最後三個字符來解決問題,但肯定必須有一種更加優雅的方式來修復此問題...
最有可能的是它的一個文件編碼問題。 Unix和Windows對換行符有不同的約定。你的C代碼是否使用'\ r'?它是否以文本模式或二進制模式打開文件? – 2010-03-05 21:49:58
我的C代碼使用\ n。原始文件是UTF-8編碼的。沒有換行字符是有問題的,只有外來字符產生問題(中文字符也是,我剛纔意識到)... – ryyst 2010-03-05 21:54:50