1. 程式人生 > >解決Ubuntu中使用windows檔名亂碼問題

解決Ubuntu中使用windows檔名亂碼問題

使ubuntu正常顯示GB2312、GBK編碼檔案 思無涯
ubuntu環境設定的字符集utf8,windows預設字符集是GBK,Ubuntu的預設字符集為utf-8,這使 得在用telnet登入遠端伺服器或檢視windows檔案時出現亂碼。需要將ubuntu環境設定為GBK或GB2312,或設定軟體使其正確顯示漢 字。下面以GBK字符集為例進行說明:

一、修改Ubuntu預設字符集為GBK
1、首先設定sudo vi /var/lib/locales/supported.d/local
新增一行 zh_CN.GBK GBK
sudo locale-gen生成locale

2、修改ubuntu的字符集
方法一: 修改使用者目錄下的.profile檔案,增加以下內容:
LANGUAGE=”zh_CN:zh:en_US:en”
LANG=zh_CN.GBK
重新登入即可。
這個方法只對該使用者有效。
方法二:修改/etc/environment,增加以下內容:
LANGUAGE=”zh_CN:zh:en_US:en”
LANG=zh_CN.GBK
然後重啟X即可
這個方法對沒有設定LANG及LANGUAGE環境變數的使用者有效

二、設定軟體命名其正常顯示GBK
這需要軟體本身支援多字元編碼,最常見的是IE等瀏覽器,可以通過設定編碼顯示GBK字符集。Ubuntu下的一些軟體也支援此功能,以ubuntu的終 端程式為例,使其正常顯示GBK編碼的方法是:在termial視窗上點選選單:終端->設定字元編碼->選擇GBK即可。

##########################################
解決檔名,mp3標籤,文字檔案的中文亂碼

從windows轉移到ubuntu的使用者,常常會發現自己在windows下建立/下載/儲存的檔案經常性出現亂碼問題(kubuntu出現問題的可能性更高一些)。而使用預設播放器開啟以往的音樂檔案(mp3等)時,出現亂碼的機會更是接近100%。

這些問題的解決方案在ubuntu使用技巧中已被收錄,但是由於問題的普遍性,我認為有必要轉移到這裡。

轉換檔名由GBK為UTF8

sudo apt-get install convmv
convmv -r -f cp936 -t utf8 --notest --nosmart *
轉換檔案內容由GBK到UTF8iconv -f gbk -t utf8 $i > newfile


轉換 mp3 標籤編碼

sudo apt-get install python-mutagen
find . -iname “*.mp3” -execdir mid3iconv -e GBK {} \;

#####################################
buntu預設的開啟.txt檔案用的是gedit,可gedit預設編碼是UTF8,開啟windows下編輯的gb2312的文件都是亂碼。解決方法之一就是把gedit的編碼改為GB2312,方法如下:



在Applications選單上點右鍵,選擇EditMenu.在MainMenu的對話方塊中勾選SystemTools-ConfigurationEditor,並從Applications選單中開啟。



依次開啟/apps/gedit-2/preferences/encodings/雙擊右側auto_detected,在彈出對話方塊中點選Add,新增Values值為GB2312,確定後選中,點選Up按鈕將其移至第一位。



同樣方法,對show_in_menu進行設定,並將GB2312置於首位。



還有一種方法是用openoffice開啟.txt檔案時,會讓你選擇編碼,選GB2312就行了。





***********************************************1.系統預設編碼
我們知道在中文 Windows 下一般來說系統的預設編碼是 GBK, 從 Java 開發的角度來說, 就是在進行諸如 Java 原始碼編譯, 檔案讀寫等操作時, 預設使用的編碼是 GBK; 而我們參照一般的 Ubuntu 中文安裝文件, 可能會建議將預設的語言設定為 zh_CN.UTF-8, 這樣會帶來一些問題, 比如我在 Windows 使用 Eclipse 時的編輯器的預設編碼是 GBK, 但是在 Ubuntu 下面就是 UTF-8, 同樣是使用 Eclipse, 在 Windows 下的中文文件到了 Ubuntu 中會產生亂碼, 必須手工逐個文件設定屬性中的編碼為 GBK 才可以正常; 一些測試程式碼也是以預設編碼讀取檔案的, 這些程式碼讀取出來的檔案內容也會包含亂碼.

所以, 最好是將系統的預設編碼設定為 GBK, 這樣和 Windows 下面的開發環境最接近. 設定的方法應該不止一種, 我採用的是編輯 /etc/environment, 改成這個樣子:
LANGUAGE="zh_CN:zh:en_US:en"
GST_ID3_TAG_ENCODING=GBK
LANG=zh_CN.GBK
LC_CTYLE=zh_CN.GBK

**********************************************
Ubuntu 中文編碼設定
今天開始把工作環境全部遷移到Linux,一天下來,算平靜。很慶幸當初在win下面用了Mozilla Thunderbird郵件客戶端,而不是OutLook,這簡直太方便了,可以直接把上百兆的郵件存放目錄複製到linux下直接用,與之形成鮮明對比 的是微軟的新版live Messager,今天發現微軟的這個東西甚至不支援安裝在他們自己的WinXP 64/Wind2003/2008上面?我沒有什麼可說的呢。


Ubuntu 預設採用UTF8編碼,可以方便global。但對中文支援,還不細緻,即便預設採用中文安裝,也並不會自動新增GB*等支援,致使在Ubuntu下訪問部分Win文字檔案時,出現亂碼。

I. 配置系統環境
執行 sudo vi /var/lib/locales/supported.d/zh
加入以下配置引數

zh_CN.GB18030 GB18030 (最新漢字編碼字符集,向下相容GBK,GB2312)
zh_CN.GBK GBK (漢字擴充套件編碼,向下相容GB2312, 幷包含BIG5全部漢字)
zh_CN.GB2312 GB2312 (簡化漢字編碼字符集, 最近有客戶要我們改進GB2312,太看得起我們了,我只能說:"NO!")
zh_CN.GB18031 GB18031 (數字鍵盤漢字編碼輸入,面向手持裝置,我的Nokia3120從來就是發簡訊,接聽電話,無法和PC通訊,就不用這個了。     maybe用Google Android SDK的大俠們需要這個)
zh_HK.BIG5 BIG5 (繁體)
zh_TW.BIG5 BIG5 (繁體)

然後執行 sudo locale-gen
提示以下資訊,成功了
zh_CN.GB18030... done
zh_CN.GBK... done
......

II. 系統環境支援GB*內碼了,但用vi, gedit等工具訪問檔案還會繼續亂碼,需要針對不同的工具分別配置,使之自己檢測支援範圍內的編碼
e.g. vi
執行 sudo vi /etc/vim/vimrc
加入以下配置引數
let &termencoding=&encoding
set fileencodings=utf-8,gb18030,gbk,gb2312,big5

e.g. gedit
執行 sudo gconf-editor
選擇 apps/gedit-2/preferences/encodings
找到 auto_detected 編輯,在Values中分別加入 GB18030,GBK,GB2312,BIG5