天天看點

Linux和Windows平台檔案編碼問題

今天在工作中遇到一個問題是“θ”字元沒辦法在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的平台都可以顯示該字元。

Linux和Windows平台檔案編碼問題
c++

繼續閱讀