UTF-8 3和4字节字符表示

时间:2013-12-03 19:40:12

标签: c utf-8

我有这个 C 代码以UTF-8编码方案打印2个字节的字符:

printf("%c%c", 0xC0 + cp / 0x40, 0x80 + cp % 0x40);

我如何以与UTF-8相同的方式表示3和4个字节?

1 个答案:

答案 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字节表示。