Qt实现16进制unicode转utf-8以及国际音标编码问题
由于项目需要,需要对网络资源进行解码。遇到编码问题。研究了下基本编码原理。于是有了下面两个通用代码
- 1. 16进制unicode转换为utf-8中文显示
- QString unicodeToUtf_8(const QString &resStr)
- {
- // unicode转utf-8 思路: 一个unicode编码占用2字节。所以只需要用4个16进制数字结合表示就行了
- QString temp;
- for (int i = 0; i< resStr.length();)
- {
- if (resStr.at(i) == '\\')
- {
- QString str = resStr.mid(i+2, 4);
- temp.append(str.toUShort(0, 16));
- i += 6;
- }
- else
- {
- temp.append(resStr.at(i));
- ++i;
- }
- }
- QTextCodec *codec = QTextCodec::codecForName("UTF-8");
- QString desStr = codec->fromUnicode(temp);
- return QObject::trUtf8(desStr.toLatin1().data());
- }
- 2. 如何显示网络中返回的16进制unicode编码的音标??
- QString getTheDecodeSymbol(const QString &resStr)
- {
- // 如何把16进制的unicode编码音标显示在窗口中?
- // 比如: \u00a0[\u026an\u02c8ta\u026at(\u0259)lm\u0259nt]
- // 解码思路如下: 先把16进制unicode编码转换为 10进制unicode编码
- // 转换方法就是下面的代码
- // 那么如何显示呢?
- // 借助QLabel的设置字体
- // tr("<span style='font-family:\"MS Mincho\";'>%1</span>").arg(data);即可
- QString desStr;
- for (int i = 0; i< resStr.length();)
- {
- if (resStr.at(i) == '\\')
- {
- QString str = resStr.mid(i+2, 4);
- desStr.append(tr("&#%1;").arg(str.toInt(0, 16)));
- i += 6;
- }
- else
- {
- desStr.append(resStr.at(i));
- ++i;
- }
- }
- return desStr;
- }
http://blog.csdn.net/wu5151/article/details/47107051
Qt实现16进制unicode转utf-8以及国际音标编码问题的更多相关文章
- QT中16进制字符串转汉字
最经在研究AT指令接受短信,短信是unicode编码,接受后需要根据系统的编码方案进行相关的转码比如接受到了一串字符4F60597D,它是“你好”的unicode编码,一个unicode编码占两个字节 ...
- 关于QT内部16进制、十进制、QByteArray,QString
QT里面的数据转化成十六进制比较麻烦,其他的int或者byte等型都有专门的函数,而十六进制没有特定的函数去转化,这我在具体的项目中已经解决(参考网上大神)->小项目程序 QT里面虽然有什么QS ...
- sell -- 解码16进制unicode
1. //System.out.println("decodeUnicode:" + decodeUnicode("0049"));//I public sta ...
- ASCII, Unicode, UTF-8, 8进制, 16进制等各种编码学习理解笔记
字符编码的发展历史 Unicode和UTF-8有何区别? 在这个问题下的于洋的最高票回答中,比较完整地介绍了字符编码的发展历史,为了便于记忆,再次简要概括一番. 一个字节:最初一个字节的标准是混乱的, ...
- Unicode字符以16进制表示
int(x [,base ]) 将x转换为一个整数 long(x [,base ]) 将x转换为一个长整数 float(x ) 将x转换到一个 ...
- QT 串口通信 数据16进制发送
在QT中进行串口通信时,很多情况要用到发送16进制的数据.从网上找来了一段代码测试能用: static QByteArray QString2Hex(QString str) { QByteArray ...
- linux shell下16进制 “\uxxxx” unicode to UTF-8中文
问题出现背景: 项目中有个通过ip获取归属地城市需求,我是直接通过新浪的ip归属查询接口来获取的.我使用的是shell脚本调用 RESULT=$(curl -s 'http://int.dpool.s ...
- Qt 将字符串转成16进制显示
最近项目用到了需要将字符串转换成16进制显示.这玩意折腾了一上午. 首先,数据块内容 struct UserData { char Head[3] = {'X','J','J'}; char Flag ...
- utf8汉字编码16进制对照
utf8汉字编码16进制对照 GB Unicode UTF-8 Chinese Character Code code# Code (coded in UT ...
随机推荐
- JavaScript之获取和设置元素属性
1.与我前面的随笔获取元素的那些方法不同http://www.cnblogs.com/GreenLeaves/p/5689075.html 获取元素属性的方法getAttribute()不属于docu ...
- asp.net验证码及怎么获取里面的数值(整合)
一.ASP.Net的验证码的作用 对于一个预防攻击的web表单来讲,验证码通常是一个常见的措施.因为如果对于一些public区域的页面内容来讲,譬如一个登录表单,如果没有必要的安全措施,很可能遭到模拟 ...
- 存储过程获取新插入记录ID
create procedure sp_AddUser1@Name nvarchar(200), @Remark nvarchar(200),@Flag int as begin declare @i ...
- Java DecimalFormat 格式化数字
我们经常要将数字进行格式化,比如取2位小数,这是最常见的.Java 提供 DecimalFormat 类,帮你用最快的速度将数字格式化为你需要的样子.下面是一个例子: importjava.text. ...
- DLL注入_拦截技术之Hook方式
后卫大师教你进程注入 首先提一下,由于文章完全是我手写,所以打不了太多,请包含,由于我已经提供了源代码,所以我在这里详细讲一下理论,至于想看代码的下载代码就可以了.代码中关于注入的部分做了详细的注释. ...
- 解决Thinkpad E450 外接显示器后没有声音的问题
昨天把公司配的ThinkPad E450 带回来了,今天用的时候一切正常没什么问题. 因为要看边看视频边做点别的,我就外接一台显示器,说出来我的这台显示器,你们绝对想不到是什么 显示器.我的这台显示器 ...
- hdu 3980 Paint Chain sg函数
题目链接 给一个长度为n的环, 两个人轮流涂色, 每次涂m个连续的, 无法继续涂了就输. #include<bits/stdc++.h> using namespace std; #def ...
- (iOS)Storyboard/xib小技巧
1.选择被view覆盖住的view 当你想直接在view中选择自己想要的元素时,但是又碍于一个view上叠加的元素太多很难直接选中,那么在这时,你同时按住键盘上的shift和 control键,然后在 ...
- CSS Flex
关于flex 请看这里 https://css-tricks.com/snippets/css/a-guide-to-flexbox/ 太详细啦!!! 还通俗易懂!!! 没啥好说的 不过上面那篇文 ...
- Asp.Net Core WebApi学习笔记(四)-- Middleware
Asp.Net Core WebApi学习笔记(四)-- Middleware 本文记录了Asp.Net管道模型和Asp.Net Core的Middleware模型的对比,并在上一篇的基础上增加Mid ...