随记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命令可以查看系统支持的语言库,要是系统没有该字体,会返回错误,记得先确认好系统是否有你设置的字库,不然发现后空余懊恼

js unicode 编码解码

js unicode 编码解码
  • LOW584710047
  • LOW584710047
  • 2015年06月26日 17:13
  • 1774

Unicode解码(unicode编码转中文)

public class Unicode2Chinese { /** * unicode解码(unicode编码转中文) * @支持格式 标准Unicode编码:\u8fbd...
  • weisong530624687
  • weisong530624687
  • 2015年01月29日 14:53
  • 674

Opencv (Opencv2)结合MFC学习数字图像处理---图片解码(1)

1. 在CImageProcessDoc类中定义图像数据 1 #include "highgui/highgui.hpp" 2 #include "core/core.hpp" 3 ...
  • LJH0600301217
  • LJH0600301217
  • 2013年03月27日 16:54
  • 3333

javascript处理HTML的Encode(转码)和Decode(解码)总结,避免js脚本注入问题

HTML的Encode(转码)和解码(Decode)在平时的开发中也是经常要处理的,在这里总结了使用javascript处理HTML的Encode(转码)和解码(Decode)的常用方式 一、用浏览器...
  • tsh18523266651
  • tsh18523266651
  • 2016年03月31日 13:48
  • 1827

C/C++对Unicode编码的处理

一直都觉得C++对Unicode编码的处理比较麻烦,现就个人经验对这一方面做个总结。 Unicode编码    在计算机科学领域中,Unicode(统一码、万国码、单一码、标准万国码)是业...
  • zhuxianjianqi
  • zhuxianjianqi
  • 2014年03月23日 21:09
  • 2245

Unicode转义(\uXXXX)的编码和解码

在涉及Web前端开发时, 有时会遇到\uXXXX格式表示的字符, 其中XXXX是16进制数字的字符串表示形式, 在js中这个叫Unicode转义字符, 和\n \r同属于转义字符. 在其他...
  • java2009cgh
  • java2009cgh
  • 2013年09月06日 13:36
  • 31215

Unicode编码及其编码方式

什么是 UnicodeUnicode (或者叫 Unicode 编码)是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转...
  • wozaixiaoximen
  • wozaixiaoximen
  • 2016年11月03日 14:00
  • 224

字节数组解Unicode字符串

这段时间遇到一个问题是需要遇到一个BinaryReader(里面可能塞了各种数据),需要从当前位置读取一个字符串,当然可能可能包括各种符号,可以理解成要读一个byte[]截取一个字符串,如果我们不加过...
  • Stephanie_1
  • Stephanie_1
  • 2016年07月05日 09:49
  • 638

android 表情的输入 Unicode实现表情展示 无需图片素材及相关解析

表情是关于聊天模块的重要组成部分。因为表情可以传递出很多文字无法表达的信息,比如说:情绪、语气等。 不过在软件的开发工程中,表情的使用却给开发者带来了不小的工作任务。特别是在表情的编码和解析这两步。...
  • TitleZWC
  • TitleZWC
  • 2017年04月15日 21:00
  • 562

字符编解码的故事(ASCII,GBK,Unicode,Utf-8区别)

此文为转载,有少许修订,原文出处不详。 很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们认为8个开关状态作为原子单位很好,于是他们把这称为"字节"。...
  • Simba888888
  • Simba888888
  • 2013年07月19日 21:00
  • 2557
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:随记unicode解码问题
举报原因:
原因补充:

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