我要在 C 中打印一些 unicode (4位十六进制)字符。
我存储在一些 short int 变量中的那些字符。以下是我应该用于我的目的的代码:
#include <stdio.h>
#include <locale.h>
#include <wchar.h>
int main(void) {
setlocale(LC_ALL,"");
short a = 0x099A, b = 0x09BE;
wchar_t *string1 = (wchar_t *) calloc(20, sizeof(wchar_t));
sprintf(string1, "\\u%04x\\u%04x", a, b);
printf(" %s ", string1);
wchar_t *string2 = (wchar_t *) calloc(20, sizeof(wchar_t));
strcpy(string2, (wchar_t *) "\u099A\u09BE");
printf(" %s \n", string2);
return 0;
}
现在的问题是:
虽然 string2 在终端中显示核心输出,但 string1 不是。
但我必须使用 1st 方法,即我将unicode字符存储在某些任意变量和&amp;我需要一种方法将它们打印在屏幕上。
任何建议都应该受到青睐。
答案 0 :(得分:3)
要打印存储在变量中的Unicode字符,为什么不将它们转换为wchar_t
并使用例如{} wprintf
?
wchar_t ac = a;
wchar_t bc = b;
wprintf(L"%c%c", ac, bc);