table of content:linux
§亂碼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...
因此仍是不夠"智能"啊..這些軟件...