中文转Unicode编码

中文转Unicode编码1 实现中文转 Unicode 将转换的 16 进制存进数组中 include iostream include string include stdio h include wchar h include stdlib h constexpraut 2048 vs 中编译 更换编译环境需要修改 defineLEN204 charsendbuf LEN stdlib h wchar h stdio h string iostream

1、实现中文转Unicode

并将转换的16进制存进数组中

#include  
     #include  
     #include 
     #include  
     #include  
     constexpr auto LEN = 2048; //vs中编译,更换编译环境需要修改 #define LEN 2048 int main() { 
    char sendbuf[LEN]; wchar_t str[] = L"中国汉字"; int i,k = 0; int move_bit = 0; setlocale(LC_ALL, "zh_CN.utf8"); char* buf = (char*)malloc(MB_CUR_MAX); for (i = 0; i < wcslen(str); i++) wprintf(L"%lx", str[i]); printf("\n"); short * p =(short*) str; for (i = 0; i < wcslen(str); i++) { 
    printf("%x ", p[i]); int four_bit = p[i] >> 12; int three_bit = (p[i] & 0x0fff) >> 8; int two_bit = (p[i] & 0x00ff) >> 4; int one_bit = p[i] & 0xf; if (four_bit > 9) sendbuf[k++] = four_bit + 55; else sendbuf[k++] = four_bit + 48; if (three_bit > 9) sendbuf[k++] = three_bit + 55; else sendbuf[k++] = three_bit + 48; if (two_bit > 9) sendbuf[k++] = two_bit + 55; else sendbuf[k++] = two_bit + 48; if (one_bit > 9) sendbuf[k++] = one_bit + 55; else sendbuf[k++] = one_bit + 48; } printf("\n"); printf("%s \n", sendbuf); } 

2、setlocale函数

运行环境的 locale 设置要和程序中 setlocale() 设定的 locale 一致,比如:终端的活动字符集、环境变量(一般用 LANG),要设置为 *.UTF-8,才能显示 setlocale(LC_ALL, “zh_CN.UTF-8”) 设定的 wchar_t 的中文字符。

用 wprintf() 时,要用 %ls 表示 wchar_t 的字符串,用 %s 表示 char 的字符串,具体参考:man 3 wprintf,而 Windows 的实现用 %ls、%s 都可以正确输出 wchar_t 字符串。

比如对于汉字,韩文以及日文这样的字符,它们的每一个文字都占据两个字节,所以C++提出了wchar_t类型,也称为双字节类型,或宽字符类型。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/201848.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午8:28
下一篇 2026年3月20日 上午8:29


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号