CoreFoundation 打印 Unicode 字符
CoreFoundation printing Unicode characters
>我有当前的代码,它似乎确实有效,除了 CFShow 没有将 \u00e9 的 unicode UTF8 编码转换为 é
#include <CoreFoundation/CoreFoundation.h>
int main()
{
char *s = "This is a test of unicode support: fiancéen";
CFTypeRef cfs = CFStringCreateWithCString(NULL, s, kCFStringEncodingUTF8);
CFShow(cfs);
}
输出为
This is a test of unicode support: fiancu00e9e
|____|
> é doesn't output properly.
如何指示 CFS如何它是 unicode? printf 在 C 字符串时处理得很好。
CFShow()
仅用于调试。它故意将非 ASCII 转换为转义代码以避免歧义。例如,"é"可以用两种方式表示:作为 U+00E9 拉丁小写字母 E 与锐音符或 U+0065 拉丁小写字母 E 后跟 U+0301 结合锐音符。如果CFShow()
发出 UTF-8 序列,您的终端可能会将其显示为"é",并且您将无法分辨字符串中的变体。这将破坏CFShow()
对调试的有用性。
你为什么关心CFShow()
的输出是什么,只要你了解字符串的内容是什么?
在我看来
,CFShow
知道字符串是Unicode,但不知道如何为控制台格式化Unicode。 我怀疑除了寻找替代方案之外,您无能为力,也许NSLog
.
相关文章:
- 如何存储 unicode 字符并将其输出到文件?
- C++:打印 Unicode 字符
- 在 Windows 中使用 boost::p rogram_options 从命令行参数读取 Unicode 字符
- 获取Unicode字符C++的十进制值
- 用wchar_t处理 unicode 字符好吗?它不会引起任何问题吗?
- C++如何通过忽略每行的第一个字符来读取 unicode 文件
- C++:如何将 unicode 字符打印到文本文件
- 动态计算 unicode 字符
- C Unicode UTF-8解码字符的问题
- 如何替换/忽略 C stdio.h getline() 中的无效 Unicode/UTF8 字符
- 无法使用 Unicode 特殊字符设置窗口文本
- 如何将整数转换为 unicode 字符
- C++20 中的严格别名规则是否允许标准 c++ unicode 字符和下划线类型之间"reinterpret
- MessageBox打印来自TCHAR缓冲区的额外Unicode字符
- 如何将小数NCR转换为Unicode字符(C )
- SQLGetPrivateProfileString 错误地读取 Unicode 字符
- 将 Unicode 字符/字符串写入文件
- 将 Unicode 字符存储在.txt文件中的新行中
- 是否有返回字符UNICODE值的函数?(C++)
- 将字符串宏/常量转换为宽字符/Unicode