gpt4 book ai didi

c++ - CoreFoundation 打印 Unicode 字符

转载 作者:太空宇宙 更新时间:2023-11-04 00:51:02 26 4
gpt4 key购买 nike

我有当前代码,它似乎确实有效,除了 CFShow 不翻译 \u00e9 的 unicode UTF8 编码这一事实。到é

#include <CoreFoundation/CoreFoundation.h>

int main()
{

char *s = "This is a test of unicode support: fiancée\n";
CFTypeRef cfs = CFStringCreateWithCString(NULL, s, kCFStringEncodingUTF8);
CFShow(cfs);

}

输出是

This is a test of unicode support: fianc\u00e9e
|____|
> é doesn't output properly.

如何指示 CFShow 它是 unicode?当它是一个 C 字符串时,printf 可以很好地处理它。

最佳答案

CFShow() 仅用于调试。它故意将非 ASCII 转换为转义码以避免歧义。例如,“é”可以用两种方式表达:U+00E9 带尖音符号的拉丁文小写字母 E 或 U+0065 后接 U+0301 组合尖音符号的拉丁文小写字母 E。如果 CFShow() 发出 UTF-8 序列,您的终端可能会将其显示为“é”,您将无法分辨字符串中的变体。这会破坏 CFShow() 用于调试的有用性。

只要您了解字符串的内容,为什么还要关心 CFShow() 的输出?

关于c++ - CoreFoundation 打印 Unicode 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18667799/

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