【发布时间】:2014-11-06 19:59:27
【问题描述】:
我正在重写这个问题。
我想使用整数常量创建一个带有 unicode 转义字符的字符串,例如 "\u03B1"。例如,这个字符串是希腊字母 alpha。
const char *alpha = "\u03B1"
我想使用整数值0x03B1 调用 printf 来构造相同的字符串。对于这个例子,它可以像这样完成,但我不确定从0x03B1 获得这两个数字。
printf("%c%c", 206, 177);
此链接说明了该怎么做,但我不知道该怎么做。 http://www.fileformat.info/info/unicode/utf8.htm
对于等于或小于 2047(十六进制 0x07FF)的字符,UTF-8 表示分布在两个字节上。第一个字节将有 两个高位设置,第三位清除(即 0xC2 到 0xDF)。这 第二个字节将设置最高位并清除第二个位(即 0x80 到 0xBF)。
注意:我不想创建带有反斜杠的字符串"\\u03B1"。这与 "\u03B1" 不同,后者是一个转义的 unicode 字符。
【问题讨论】:
-
C 或 C++,选择一个,因为答案会千差万别。
-
printf("\\u%04x", 1234); -
明确您是否希望以字符串
'\', 'u', '1', '2', '3', '4', '\0'结尾,或者您是否尝试构建代码点U+1234 的单个字符 -
另外,您的控制台是否直接支持宽Unicode字符,还是需要输出UTF8?
-
如果你想要一个反斜杠,你需要转义它,所以输入其中两个。
printf("\\u%04x", 0x1234)做你想做的事吗?