我有这个 C 代码以UTF-8编码方案打印2个字节的字符:
printf("%c%c", 0xC0 + cp / 0x40, 0x80 + cp % 0x40);
我如何以与UTF-8相同的方式表示3和4个字节?
答案 0 :(得分:2)
如果您已调用setlocale
且语言环境使用UTF-8且wchar_t
存储Unicode代码点值,则可以执行以下操作:
printf("%lc", (wint_t)cp);
否则,对于3字节表示,您可以执行以下操作:
printf("%c%c%c", 0xE0 + cp/0x40/0x40, 0x80 + cp/0x40%0x40, 0x80 + cp%0x40);
类似于4字节。请注意,这种方法不推荐,因为您很容易意外地为UTF-8表示实际为2字节的字符输出无效的3字节表示。