gcc
GNU C/C++編譯器也可以正確支持wchar_t字符和字符串,但是源代碼的保存格式必須符合
下面條件:
一、源代碼文件的保存編碼必須是UTF-8
二、UTF-8編碼格式的源代碼文件,不能有BOM標志頭。
只有源代碼文件符合上面兩個條件,gcc才會正確支持wchar_t字符和字符串。如果不符合
上面兩個條件的話,有可能會編譯出錯,有可能會產生錯誤的wchar_t字符和字符串。
gcc在Windows平臺下,wchar_t是16位類型,在Linux平臺下,wchar_t是32位類型。
另外,GCC提供了以下的參數開關來支持其它文字編碼的源文件:
(a)-finput-charset=charset
gcc在默認情況下,總是假設源代碼的編碼是UTF-8,如果是其它編碼的源代碼文件,
源代碼里面又用到了wchar_t的類型,則可以使用-finput-charset=charset這個參數
來實現。
例如通常使用GBK編碼的源代碼可以假如參數:-finput-charset=GBK
(b)-fwide-exec-charset=charset
默認情況下,gcc在Windows平臺下,寬字符串串常量的每個字符是16位UTF-16類型,
在Linux平臺下,寬字符串串常量的每個字符是32位UTF-32類型,
使用這個參數,可以改變寬字符串串常量的類型。
例如在x86的機器環境,Linux操作系統下,要使例如 L"漢字" 編譯后保存為UTF-16
的字符串,則可以使用 -fwide-exec-charset=UTF-16LE