今天在工作中遇到一個問題是“θ”字元沒辦法在Linux中正常顯示,而在Windows平台中可以顯示,由于軟體必須支援win和Linux雙平台,故需要解決這個問題。
在尋找BUG原因的過程中我發現原因就是Linux的檔案編碼格式和windows是不一樣的,在Windows中編寫的cpp源檔案使用的是GBK2312編碼格式,而在Linux中編寫的cpp檔案格式則為unicode,是以在windows平台編寫的非英文字元在Linux下顯示為亂碼。
上網查詢後發現有以下幾種解決方案:
修改Linux的預設編碼為GBK
方法1:
vi /etc/sysconfig/i18n
預設環境變量
SYSFONT="latarcyrheb-sun16"
修改為:
SUPPORTED="zh_CN.UTF-8:zh_CN:zh"
SYSFONT="latarcyrheb-sun16"
方法2:
vi /etc/profile
export LC_ALL="zh_CN.GBK"
export
大家可以看出來這種方法修改了Linux的本地環境變量,使得支援GBK的編碼,但是我們的程式是需要釋出的,不允許也不能直接修改使用者本地的編碼方式,是以在這種方法是不可取的。
好了,不賣關子了,我最後的解決辦法是使用了Qt中的QChar類型,這種類對象可以使用Unicode碼直接初始化為對應字元
例如:Qchar c(0xFFF);
這樣就不需要使用輸入法來輸入字元,而且隻要支援Unicode的平台都可以顯示該字元。
