gpt4 book ai didi

c++ - 使用 C++11\u vs\x 输出 Unicode 字符串时输出不同?

转载 作者:行者123 更新时间:2023-11-28 00:07:06 29 4
gpt4 key购买 nike

这是一个简单的程序,应该输出以下四个 Unicode 字形。总共有四个字形,由五个代码点或 14 个字节组成,采用纯 UTF-8。

我的印象是它们的输出应该是一样的;一个只是代码点列表,另一个是同一列表的 UTF-8 编码形式。

请注意,您的控制台可能看不到其中一些符号。马头(equid)应该是不可见的,因为它很可能不受系统上任何已安装字体的支持。

并不是说这个问题具体是关于为什么输出不同;似乎 equid 字符是问题所在?

你也可以在这里使用gcc-5.1编译运行: https://ideone.com/Q31D9x

#include <iostream>

using namespace std;

int main() {
cout << "\x61\xE0\xA4\xA8\xE0\xA4\xBF\xE4\xBA\x9C\xF0\x90\x82\x83" << endl;
cout << "\u0061\u0928\u093F\u4E9C\u10083" << endl;

return 0;
}

原图来源: http://unicode.org/faq/char_combmark.html

更新

修改后的代码是:

#include <iostream>

using namespace std;

int main() {
cout << u8"\x61\xE0\xA4\xA8\xE0\xA4\xBF\xE4\xBA\x9C\xF0\x90\x82\x83" << endl;
cout << u8"\u0061\u0928\u093F\u4E9C\U00010083" << endl;

return 0;
}

最佳答案

解析器必须通过假设 \u1008Basic Multilingual Plane 中的一个 unicode 代码点来解析 \u10083,后跟一个 3。结果表示的确切内容取决于字符串的类型(例如,L""u8""u""U"")。对于没有这种前缀的字符串,确切的表示是实现定义的。

对于 BMP 之外的代码点,有 \U00010083 表示法。

关于c++ - 使用 C++11\u vs\x 输出 Unicode 字符串时输出不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35005365/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com