c++ unicode转换成汉字

2025-04-07 05:22:01
推荐回答(4个)
回答1:

给你个思路,首先做字符串分拆,以 \u 为分隔符得到每一个编码的值,如上面的 56de 这些子串.
然后参考:

Unicode 的 C 语言支持

在正式情况下,从 GNU glibc 2.2 开始,wchar_t 类型只为 32 位的 ISO 10646 格式数值所特定使用,与当前使用的语言环境无关。通过 ISO C99 所要求的 __STDC_ISO_10646__ 宏的定义作为信号通知应用程序。 __STDC_ISO_10646__ 的定义用来指出 wchar_t 是 Unicode。精确的值是一个十进制的 yyyymmL 格式的常数。例如,使用:
清单 4. 指出 wchar_t 是 Unicode

#define __STDC_ISO_10646__ 200104L

是为指出 wchar_t 类型的值是由 ISO/IEC 10646 和到指定的年月为止的所有修正与技术勘误定义的字符编码表示。

对 wchar_t 的利用如这个示例所示,使用宏确定在 ISO C99 可移植代码中写双引号的方法。

清单 5. 确定写双引号的方法

#if __STDC_ISO_10646__
printf("%lc", 0x201c);
#else
putchar('"');
#fi

自己试试吧...

回答2:

如果你的input不是"\u56de"而是"0x56de"的话
可以使用
TCHAR ch = strtol("0x56de", NULL, 16);
然后
cout<
linux下,试试把TCHAR换成wchar_t

回答3:

你直接这么做呢(C语言的)
char c='回';
printf("%c",c);

回答4:

Unicode 的 C 语言支持

在正式情况下,从 GNU glibc 2.2 开始,wchar_t 类型只为 32 位的 ISO 10646 格式数值所特定使用,与当前使用的语言环境无关。通过 ISO C99 所要求的 __STDC_ISO_10646__ 宏的定义作为信号通知应用程序。 __STDC_ISO_10646__ 的定义用来指出 wchar_t 是 Unicode。精确的值是一个十进制的 yyyymmL 格式的常数。例如,使用:
清单 4. 指出 wchar_t 是 Unicode

#define __STDC_ISO_10646__ 200104L

是为指出 wchar_t 类型的值是由 ISO/IEC 10646 和到指定的年月为止的所有修正与技术勘误定义的字符编码表示。

对 wchar_t 的利用如这个示例所示,使用宏确定在 ISO C99 可移植代码中写双引号的方法。

清单 5. 确定写双引号的方法

#if __STDC_ISO_10646__
printf("%lc", 0x201c);
#else
putchar('"');
#fi

自己试试吧...

你直接这么做呢(C语言的)
char c='回';
printf("%c",c);

如果你的input不是"\u56de"而是"0x56de"的话
可以使用
TCHAR ch = strtol("0x56de", NULL, 16);
然后
cout<
linux下,试试把TCHAR换成wchar_t