c++ 字串utf-8 通用字元名 用unicode編碼表示
阿新 • • 發佈:2021-09-07
通用字元名(UCN)
c++11引入了一種新的轉義字元——通用字元名(universal character names)。表示就是\uxxxx
或者\Uxxxxxxxx
,xxxx是一個unicode碼點。
#include <iostream>
using namespace std;
int main()
{
const char* a = "\u4f60";
// const char* a = "\U00004f60";
cout << a << endl;
}
要注意,程式碼中寫的是字元的unicode編碼,執行時輸出的是utf-8編碼,注意區分。可以在
這裡查字元的Unicode編碼
在windows下用g++編譯執行上述程式碼,會輸出utf-8編碼的“你”(a的長度是3+1位元組),g++預設使用的執行字符集是utf-8。
如果用msvc編譯器,執行字符集預設使用gbk,會輸出gbk編碼的“你”(a的長度是2+1位元組)。
對於【執行字符集和原始檔字符集】,可以看我的另一篇部落格。
u8字首
如果字串用u8字首,則表示這段字串用utf-8編碼執行。
#include <iostream> using namespace std; int main() { const char* a = "\u4f60"; const char* b = u8"好"; const char* c = "啊"; cout << a << endl; cout << b << endl; cout << c << endl; }
上述程式碼以utf-8格式儲存,用g++編譯,會輸出utf-8編碼的“你好啊”。因為g++預設使用的執行字符集就是utf-8。
如果以GBK格式儲存並用msvc編譯,由於預設執行字符集是GBK,會將“你”和“啊”用GBK編碼輸出,將“好”用utf-8編碼輸出。(再次提醒注意,這裡原始碼儲存為GBK和執行字符集是GBK無關。)