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无关。)

原文链接: https://www.cnblogs.com/wangbingbing/p/15238434.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    c++ 字符串utf-8 通用字符名 用unicode编码表示

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/213549

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月13日 上午1:47
下一篇 2023年2月13日 上午1:48

相关推荐