因為測試光盤上中文文件名的顯示,對locale和encoding有了一些新的認識!
測試平台:FreeBSD 6.2 release,kde,安裝了中文字體
測試一:
setenv LANG zh_CN.UTF-8,在用戶目錄下生成了一個“測試用例.txt"的中文文件名!在模擬終端和Konqueror中都能正常顯示中文文件名。
當我在模擬終端上修改了encoding, UTF-8 =====>>>> GBK 後,ls -w 的結果是:
-------->娴嬭瘯鐢ㄤ緥.txt
我的理解是:當用戶的locale設定為zh_CN.UTF-8時,用戶所生成的文件名是按照 UTF-8 來進行編碼的!當用別的編碼來解讀的話,比如GBK,就會出現“錯誤”
測試二:
在模擬終端上,setenv LANG zh_CN.GBK,編碼設置為gbk,在用戶目錄下生成一個“測試用例gbk.txt“,可以用ls -w 顯示出正確的文件名。
在Konqueror中不能正確顯示!
小結1:在zh_CN.UTF-8的locale下,對於gbk編碼的文件名不能正確顯示!而文件名的編碼方式是由locale來決定的!我想這是KDE在對文件名按照locale的定義中的編碼部分進行顯示,把gbk編碼文件名當成utf編碼來讀,因為編碼本身是不兼容的,所以出現不能正確顯示。
結論1:如果考慮到於Windows的交互使用,不能使用zh_CN.UTF-8 這個locale,因為在這個locale下的文件名編碼是utf-8,windows和其他的中文locale沒有辦法對它進行正確的處理!
如果考慮系統的一致性和編碼集的國際慣例,例如與KDE的一致性,可以采用zh_CN.UTF-8的locale!