[IOS微信] Unicode码 转化为字符串
最近在研究IOS手机备份的数据,里面的微信数据中,每一个微信账号对应一个文件:mmsetting.archive
用来保存此账号的详细信息。
该文件是一个加强版的plist文件(此文件使用的是plist格式,但却包含汉字)
该文件是二进制数据,其中的汉字保存的是Unicode码,并且这个码位是被拆分成2个数字的。例如:
95, 174, 79, 225, 86, 226, 150, 31
对应的是:“微信团队” 四个字
转换为字符串: char* s1 = "\u5fae\u4fe1\u56e2\u961f"; //很简单吧
(95, 174 对应于“微” 字 ,它们的十六进制分别是:0x5f , 0xae .以此类推)
但是,我们从文件中获取的汉字很多,并且是不确定的。所以,代码里应该是这样的:
CString s1;
s1.Format(L"\\u%x%x\\u%x%x\\u%x%x\\u%x%x", 95, 174, 79, 225, 86, 226, 150, 31);
这样得到的是字符串:\u5fae\u4fe1\u56e2\u961f ,而不是汉字,明显是错误的。(使用std::wstring 也一样)
正确的方法应该是:直接把Unicode码 添加进wstring对象
std::wstring str;
int c;
c = * * + ; //得到unicode码对应的整型
str.push_back(c); //这个函数只能添加单个字符,而在宽字节环境下,每个字符的unicode码是唯一的 c = * * + ;
str.push_back(c); c = * * + ;
str.push_back(c); c = * * + ;
str.push_back(c);
通用函数如下:
static wstring unicode2string(const vector<unsigned char>& charBytes)
{
std::wstring str;
int code = ;
unsigned char c1, c2;
auto it = charBytes.begin();
while ( it != charBytes.end())
{
c1 = *it;
if (++it != charBytes.end())
{
c2 = *it;
code = c1 * * + c2;
str.push_back(code); ++it;
}
} return str;
}
不能使用std::string
[IOS微信] Unicode码 转化为字符串的更多相关文章
- 微信连WiFi关注公众号流程更新 解决ios微信扫描二维码不关注就能上网的问题
前几天鼓捣了一下微信连WiFi功能,设置还蛮简单的,但ytkah发现如果是ios版微信扫描微信连WiFi生成的二维码不用关注公众号就可以直接上网了,而安卓版需要关注公众号才能上网,这样就少了很多ios ...
- 字符串与Unicode码的相互转换
//1,字符串转换为unicode码 var s = '吴'; //2,unicode码转字符串 '\u5434'.toString(16) //吴 或者 String.fromCharCode(21 ...
- javaScript 字符串与unicode码之间的相互转换,函数的封装
在我们的开发过程中,有时在对数据进行储存的时候,我们需要将字符串转成unicode. 比如,在jsp开发时,前端使用页面间传值时,将传值参数先存入cookie中,然后在使用的时候,再从ookie中取出 ...
- C#版微信公众号支付|微信H5支付|微信扫码支付问题汇总及解决方案总结
最近负责的一些项目开发,都用到了微信支付(微信公众号支付.微信H5支付.微信扫码支付).在开发的过程中,在调试支付的过程中,或多或少都遇到了一些问题,今天总结下,分享,留存.代码在文章结尾处,有需要的 ...
- JS之汉字与Unicode码的相互转化
有时候,我们在给后端传递变量的的值中有汉字,可能由于编码的原因,传递到后端后变为乱码了.所以有时候为了省事或者其它特殊要求的时候,会把传递的汉字转换成Unicode编码后再进行传递. 当然汉字转换成u ...
- .NET MVC结构框架下的微信扫码支付模式二 API接口开发测试
直接上干货 ,我们的宗旨就是为人民服务.授人以鱼不如授人以渔.不吹毛求疵.不浮夸.不虚伪.不忽悠.一切都是为了社会共同进步,繁荣昌盛,小程序猿.大程序猿.老程序猿还是嫩程序猿,希望这个社会不要太急功近 ...
- .NET微信扫码支付模式二API接口开发测试
主要实现微信扫码支付,官网的SDKdemo 就不要使用 一直不能调试通过的,还是自己按照API接口文档一步一步来实现,吐槽下微信一点责任感都木有,能不能demo搞个正常的吗,不要坑惨了一大群码农们有点 ...
- Python字符和字符值(ASCII或Unicode码值)转换方法
Python字符和字符值(ASCII或Unicode码值)转换方法 这篇文章主要介绍了Python字符和字符值(ASCII或Unicode码值)转换方法,即把字符串在ASCII值或者Unicode值之 ...
- python 中的 用chr()数值转化为字符串,字符转化为数值ord(s)函数
1.1 python字符串定义 #!/usr/bin/python # -*- coding: utf8 -*- # 定义一个字符串 s1 = 'this is long String that sp ...
随机推荐
- Q-Q图
来自:https://mp.weixin.qq.com/s/_UTKNcOgKQcCogk2C2tsQQ 正负样本数据集符合独立同分布是构建机器学习模型的前提,从概率的角度分析,样本数据独立同分布是正 ...
- NativeWindow_01_CreateWindow(Ex)_VC6
1. #include <windows.h> LRESULT CALLBACK ProcWindow(HWND hwnd, UINT uMsg, WPARAM wParam, LPARA ...
- 总要先爬出坑的JEE架构
先来看看官网对它的定义. Java平台企业版(Java EE)是社区驱动的企业软件的标准.Java EE是使用Java Community Process开发的,其中包括来自行业专家,商业和开源组织, ...
- leecode第一百零四题(二叉树的最大深度)
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode ...
- HTML5-用canvas画布rotate字体旋转(中国象棋棋谱)。
一开始我们老师安排我做这个作业,在这个作业我遇到了一个很重大的问题就是,文字旋转这么旋转,我查了很多资料. 1发现绘画正方形,使他正方形中心原点旋转非常容易理解.(我相信这个很多人看一下都会懂,) 1 ...
- lua --- Module
首先需要明白,一般情况下,我们的定义的lua模块的文件与模块名(其实就是table的名字)是一致的,当然,不一致代码也是可以编译的(亲测),之所以这样,本人认为是为了实际项目中管理的方便.以下是定义模 ...
- 第 7 章 多主机管理 - 045 - 安装 Docker Machine
安装 Docker Machine 先安装docker 官方安装docker-machine的文档地址:https://docs.docker.com/machine/install-machine/ ...
- VS2008版本引入第三方dll无强签名
sn.exe 和ilasm.exe 是系统自带程序.如果显示无此命令,可以从“我的电脑”直接搜索. 将dll文件放入目录下,用VS开发人员命令执行以下命令即可.(以Interop.Scripting. ...
- 单细胞RNA-seq比对定量用什么工具好?使用哪个版本的基因组?数据来说话
这么多工具和基因组版本,选择困难症犯了,到底用哪个好呢? 2018 nature - Developmental diversification of cortical inhibitory inte ...
- Vue.js的后端数据支持:使用Express建立app, 并使用MongoDB数据库。
需要用到的backed tech stack: Node: JavaScript on the server/backend. That's basically what it is, but mor ...