table of content:
- 亂碼問題
- 用gedit選擇正確的字符編碼打開文件
- 文件轉碼
- 總結
§亂碼
Fedora安裝時默認用UTF-8字符編碼方式, 這么做有國際化的好處(和很多用utf-8的地方兼容), 但是也有兼容問題. 比如:
中文編碼在windows下不是utf-8編碼, 因為政策要求, 在中國銷售的軟件要用國標碼 (即GBK, GB2312, GB18030(最新的))
所以中文windows用GB18030的編碼, 這就導致一個小問題. 在linux下打開windows的文件出現亂碼, 如圖
用Gedit打開一個GB18030編碼的文件 (雙擊打開時)

為什么會這樣, 因為gedit用解碼utf-8的方式編碼(decode) 用GB18030編碼的文本, 就像用解釋英語解釋一段法語一樣,翻譯出一堆沒意義的句子.
§以正確字符編碼(character encodings)打開
解決亂碼的方法很簡單, gedit本身支持很多種字符編碼, 如圖

1. 用gedit的打開Open打開文件,
選擇其它文件(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...
所以還是不夠"智能"啊..這些軟件...
