随记unicode解码问题

原创 2015年11月19日 14:52:50

MCU收到视屏终端的225报文时解析终端名称汉文出错,直接解析为\uXXXX的字符串,其实是因为mcu网络代理进程采用java栈后,发到后台的名字采用json的unicode编码,linux不能识别\u转义符,而将其解析为 \ 和 u 两个字符,于是自己手动转换

  wchar_t wstr;
                        int k=0;
                        char strbuf_tmp[kCallMaxAddrLen] = { 0 };
                        char * ptr=strbuf_tmp;
                        setlocale(LC_ALL, "zh_CN.utf8");

                        unsigned char chs[4]="";
                        for (int i = 0; i < displayLen; )
                        {
                                if(0x5c==strbuf[i]&&0x75==strbuf[i+1])
                                {
                                        i+=2;
                                        for(int j=0;j<4;j++)
                                        {
                                                if(strbuf[i+j]<='9'&&strbuf[i+j]>='0')
                                                        chs[j]=(strbuf[i+j]-48);
                                                else
                                                        chs[j]=(strbuf[i+j]-87);
                                        }
                                        i+=4;
                                        wstr=chs[0]<<12 | chs[1]<<8 | chs[2]<<4 | chs[3];
                                        ptr+=wctomb(ptr,wstr);
                                }
                                else
                                {
                                        *ptr=strbuf[i];
                                        ++ptr;
                                        ++i;
                                }
                        }

写的比较丑,用wctomb是考虑了中文和数字字母混合名称的处理,这里主要记一下 setlocale(LC_ALL, "zh_CN.utf8")这个函数,linux下locale命令可以查看系统支持的语言库,要是系统没有该字体,会返回错误,记得先确认好系统是否有你设置的字库,不然发现后空余懊恼

相关文章推荐

随记整理--在自学web遇到的问题

自己自学web,遇到很多问题,也谷歌百度了很多,现在就记录一下最近遇到的问题 简单介绍遇到的问题和解决方法:1.Uncaught TypeError: Cannot call method 'getE...

Java性能问题定位与调优随记

Java虚拟机调优随记 事情发生在16年3月初了。当时系统beta版本进行上线前的性能压测时,发现程序性能的随着压测时间增加而持续下降。 在讲述整个过程前,请大家自备两个梯子: 1)Java虚拟机...

C++随记(三)---动态分配内存问题(2)

作者:teeyohuang 邮箱:teeyohuang@163.com 本文系原创,供交流学习使用,转载请注明出处,谢谢 C++随记(三)---动态分配内存问题(2)      上...

maven编译后资源文件内容发生变更问题随记

现象描述最近做的个功能需要将字体文件放入common.jar中提供读取加载字体,然后发现将字体放在web项目中编译出来的大小和common.jar编译出来的大小不同,而且放在common.jar中的无...

android 开发 小问题 随记

1 如何Activity启动时自动获得焦点,取消EditText自动获取焦点的方法 getWindow().setSoftInputMode( WindowMan...

SimpleDateFormat问题随记

以下内容仅做记录。 import java.text.ParseException; public class TestFormat { /** * 是否有效的日期 ...
  • hbyzzdw
  • hbyzzdw
  • 2016年05月19日 10:06
  • 134

C++随记(六)---函数处理数组的一些问题

作者:teeyohuang 邮箱:teeyohuang@163.com 本文系原创,供交流学习使用,转载请注明出处,谢谢 C++随机(六)---函数处理数组的一些问题 本篇讨论数组做函数形参的...

[随记]web开发需要注意请求参数编码问题

GET,POST请求数据传递问题对于GET方式最好在数据传递之前对数据进行URLEncode 采用服务器默认的编码进行编码对于POST方式表单中的参数值对是通过request body发送给服务器。1...

C++随记(二)---动态分配内存问题(1)

作者:teeyohuang 邮箱:teeyohuang@163.com 本文系原创,供交流学习使用,转载请注明出处,谢谢 C++随记(二)---动态分配内存问题(1) 面向对象的编程的一...

Cocos2d-x 学习随记二 Boost::Locale解决中文乱码问题

一、Cocos2d-x 引擎编码格式默认为utf8,而
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:随记unicode解码问题
举报原因:
原因补充:

(最多只允许输入30个字)