1. 程式人生 > 其它 >c++ 字串utf-8 通用字元名 用unicode編碼表示

c++ 字串utf-8 通用字元名 用unicode編碼表示

通用字元名(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無關。)