Linux下windows中文文本文件亂碼問題

table of content:linux

  1. 亂碼問題
  2. 用gedit選擇正確的字符編碼打開文件
  3. 文件轉碼
  4. 總結

 

§亂碼windows

Fedora安裝時默認用UTF-8字符編碼方式, 這麼作有國際化的好處(和不少用utf-8的地方兼容), 可是也有兼容問題. 好比:工具

中文編碼在windows下不是utf-8編碼, 由於政策要求, 在中國銷售的軟件要用國標碼 (即GBK, GB2312, GB18030(最新的))網站

因此中文windows用GB18030的編碼, 這就致使一個小問題. 在linux下打開windows的文件出現亂碼, 如圖編碼

 

用Gedit打開一個GB18030編碼的文件 (雙擊打開時)spa

爲何會這樣, 由於gedit用解碼utf-8的方式編碼(decode) 用GB18030編碼的文本, 就像用解釋英語解釋一段法語同樣,翻譯出一堆沒意義的句子.命令行

 

§以正確字符編碼(character encodings)打開翻譯

解決亂碼的方法很簡單, gedit自己支持不少種字符編碼, 如圖code

1. 用gedit的打開Open打開文件,blog

選擇其它文件(other documents...)   

2.

(左下角的Character encoding 處選擇正確的字符編碼)

而後,文件就正常打開啦:

(請忽略文本內容, 只是恰好是這個文件而已, 不是給網站打廣告......)

此外, 若是用命令行的方式打開一個文件能夠用gedit --encoding 相應編碼 的方式來打開

 

§轉碼

用gedit打開一個文件

(此文件用gb2312編碼)

另存爲 saveas 此時在左下角選擇utf-16的編碼,點擊save

此時新文件就是utf-16格式的, 在終端用file命令能夠看到文件的新編碼

 

$ file 用utf-16保存的新文本.txt 
用utf-16保存的新文本.txt: Little-endian UTF-16 Unicode text, with CRLF, CR line terminators

 

 

 

也有其它工具用來轉碼, 將gb18030轉爲utf-8, 好比 iconv

用法: iconv [options] [-f from-encoding] [-t to-encoding] [inputfile]...

$ file win_gb2312.txt 
    win_gb2312.txt: ISO-8859 text, with CRLF line terminators
$ iconv -f gb2312 -t utf-8 win_gb2312.txt  -o utf_encoding.txt  # (-o選項指定輸出文件)
$ file utf_encoding.txt 
    utf_encoding.txt: UTF-8 Unicode text, with CRLF line terminators

 

§總結

這些方法都有不可忽視的缺點: 那就是你要提早知道文件的原編碼方式是啥, 否則就要一個一個試.

如何查看一個文件的編碼方式, 能夠用file命令查看, 可是file命令不可靠, 一個gb2312編碼的文件file命令判斷爲ISO-8859...

因此仍是不夠"智能"啊..這些軟件...

相關文章
相關標籤/搜索