在C語言中如何指定字元串編碼方式?

IDE:Eclipse
希望能將字元編碼指定為多位元組(GB2313)或寬位元組(UNICODE)
在C#中有對應的宏可以使用的


上來一句「編譯器:Eclipse」我也是醉了


只有ascii和unidode
如果wchar_t不支持的話可以試試用windows.h里提供的TCHAR類型


char a[] = "xxx"; // 鬼知道什麼編碼,決定的因素太多了
wchar_t b[] = L"xxx"; // 寬字元,但仍然不知道是何編碼,比如在VC中為UTF16,而gcc為UTF32

char c[] = u8"I"m a UTF-8 string."; // utf8編碼
char16_t d[] = u"This is a UTF-16 string." // UTF-16編碼
char32_t e[] = U"This is a UTF-32 string." // UTF-32編碼


是這樣子的。在c++03裡面,你一個char*字元串的編碼是什麼,是不知道的,不過你的字元串如果是.c[pp]文本裡面的話,那就是文本的編碼格式。

如果是wchar_t,那就是確定的utf16/32編碼。

c++11的話,上面那些菊苣都已經說了。


評論有人指出錯誤,已修正
char foo [] = "acsii"
wchar_t wfoo [] = L"unicode"

utf8 或者別的,不支持,得自己轉換


setlocate
微軟下,要轉utf8需要系統api MultiByteToWideChar這樣的函數,選擇對應的參數就可以了


推薦閱讀:

莫扎特的《魔笛》是否像有些人講的那樣——泄漏了共濟會的秘密?

TAG:Unicode統一碼 | C編程語言 | 字元編碼 | 編碼 | GBK |