中文檔名編碼和G_BROKEN_FILENAMES環境變數(轉)

post0發表於2007-08-11
中文檔名編碼和G_BROKEN_FILENAMES環境變數(轉)[@more@]

開始改用Debian,當終於把中文的顯示和輸入搞定,心想總算可以安心使用的時候,突然發現自己又面臨一個兩難的選擇。

身為中國人自然要用國家標準的GB18030,所以我的Gnome的語言一定要選中文GB18030,我喜歡用Xmms聽歌,當我向播放列表新增歌曲的時候發現了一個有趣的現象:在瀏覽資料夾的對話方塊中的以中文作為檔名歌曲中有一些正常,其它則在應該顯示檔名的地方是一片空白。經過一番試驗我發現用瀏覽器下載時,直接使用中文檔名儲存的歌曲是可以正常顯示的,而另外那些我在Nautilus檔案瀏覽器中後改成中文檔名的則是空白。我們知道 ext2,ext3檔案系統不像vfat,ntfs那樣使用utf16儲存檔名,而是以位元組流的方式對待檔名,給它什麼就用什麼,不作任何轉換。因此可以肯定這兩種檔名是以兩種編碼儲存的,Xmms這種GTK1的程式能夠正常顯示的應該是用GB編碼,另外那種我想應該是GKT2使用的UTF8。為了驗證,執行gedit,選擇開啟檔案,果然Xmms不能顯示的在這裡正常,而Xmms正常的這裡顯示成/214/213/222/245這個樣子,而這些數字正是漢字的GB碼。不論使用哪種編碼都會有問題,要麼GTK1不能顯示,要麼GTK2顯示成/xxx/xxx的樣子。

有人建議我LOCALES直接設成UTF8編碼算了,我試了試,也發現了一些問題:

GTK1程式在UTF8編碼下不只檔名不認識,連選單,按鈕的漢字也變成亂碼了。

國內ftp上的中文檔名都是GB編碼,我在UTF8編碼環境下用gftp不能正確瀏覽,聽說有一個叫遠端字符集的設定,不過我試了半天也沒弄好。

在圖形的命令列下也不能正確顯示utf8編碼的漢字

這樣也不行,那樣也不行,怎樣設定都有些毛病,簡直令我抓狂。

還好偶然看到了一個叫G_BROKEN_FILENAMES的環境變數,說是讓GTK2使用LOCALES中的編碼方式處理檔名,立即動手,在我的 .gnomerc 中加入 export G_BROKEN_FILENAMES=1

登出,選擇中文GB18030,登入......

啊~~~整個世界清靜了!!!

gogoliu回覆:

你那是gtk 2.2時代的方法了

2.4開始應該改為

G_FILENAME_ENCODING=@local

export G_FILENAME_ENCODING


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-945850/,如需轉載,請註明出處,否則將追究法律責任。

相關文章