CoreFoundation打印Unicode字符

我有当前的代码,它似乎工作,除了事实CFShow没有将\ u00e9的unicode UTF8编码转换为é

#include  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? printf是ac字符串时处理得很好。

CFShow()仅用于调试。 它故意将非ASCII转换为转义码以避免歧义。 例如,“é”可以用两种方式表示:U + 00E9 LATIN SMALL LETTER E WITH ACUTE或U + 0065 LATIN SMALL LETTER E后跟U + 0301 COMBINING ACUTE ACCENT。 如果CFShow()要发出UTF-8序列,您的终端可能会将其显示为“é”,并且您将无法分辨字符串中的哪个变体。 这会破坏CFShow()用于调试的有用性。

为什么你关心CFShow()的输出只要你理解字符串的内容是什么?

在我看来, CFShow知道字符串是Unicode,但不知道如何格式化控制台的Unicode。 我怀疑你可以做任何事情,但寻找替代品,也许是NSLog