已知在C中,字符串由char
s的數組表示。處理C字符串操作中的中文字符
而在大多數32位處理器中,char
需要一個字節或八位。並且一個字符串由一個byte
s的數組組成。
因爲擴展字符如中文和日文佔用以上位比8位,所以我對這個東西有點困惑。
例如,我測試了我可以使用像char array[100]
這樣的語法來定義一組中文字符,就像定義一組英文字母一樣。所以我的問題是:
是否有一種機制試圖彌合一般8位字符和8位以上字符之間的差距,以便它們被視爲相同,就像我之前提到的那樣。
已知在C中,字符串由char
s的數組表示。處理C字符串操作中的中文字符
而在大多數32位處理器中,char
需要一個字節或八位。並且一個字符串由一個byte
s的數組組成。
因爲擴展字符如中文和日文佔用以上位比8位,所以我對這個東西有點困惑。
例如,我測試了我可以使用像char array[100]
這樣的語法來定義一組中文字符,就像定義一組英文字母一樣。所以我的問題是:
是否有一種機制試圖彌合一般8位字符和8位以上字符之間的差距,以便它們被視爲相同,就像我之前提到的那樣。
我建議使用的UTF8編碼字符串,因爲它使得可以使用正常(字節< = 127)字符通常,此外,你就可以使用兩相,三相或者通過檢測Unicode控制字符(字節> = 128)來生成四字節字符。你也可以使用libiconv解決一些相關的問題。 http://www.gnu.org/software/libiconv/
您應該使用wchar_t代替,這將解釋更多關於寬字符及其在C/C++中的使用。 http://en.wikipedia.org/wiki/Wide_character#C.2FC.2B.2B – 2012-03-18 07:13:18
您需要研究什麼是所謂的MBCS或多字節字符集。 – 2012-03-18 07:43:23
@JesusRamos:'wchar_t'類型(相當於使用它的代碼)並不是很便攜,因爲你不知道它使用什麼編碼,或者它是否支持Unicode。 – 2012-05-20 22:04:38