QT字符编码转换,可用于中文内码传输
串口、TCP、UDP传输中文字符时,先将字符串转内码。客户端接收到数据后,将内码转为字符串就OK了
QByteArray CommonFunction::strToInterCode(constQString &str)//字符串转内码
{
QString strName = str.toLocal8Bit();
QByteArray code;
code.append (strName);
while(code.count()<8)
{
code.append (QByteArray::fromHex ("20"));
}
qDebug ()<<"string to intercode"<<QObject::tr("%1").arg (code.toHex ().data ());
return code;
}
//内码转字符串,要求为双字节数
QString CommonFunction::interCodeToStr(const QByteArray &data)
{
QString str;
QByteArray temp;
for(int i= 0;i<data.length();i+=2)
{
if(!(data[i] == 0x20 && data[i+1] == 0x20))
{
temp.append (data[i]);
temp.append (data[i+1]);
}
}
str = QString::fromLocal8Bit(temp);
qDebug ()<< "intercode To string :"<<str;
return str;
}
// 字符串转Unicode码
QByteArray CommonFunction::strToUniCode(const QString &str)
{
// 这里传来的字符串一定要加tr,main函数里可以加 QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
QString stt = QObject::tr("%1").arg (str);
QByteArray data;
const QChar *q;
QChar qtmp;
int num;
q=stt.unicode();
int len=stt.count();
for(int i=0;i<len;i++)
{
qtmp =(QChar)*q++;
num= qtmp.unicode();
quint8 hi = (quint8)(num >> 8);
quint8 lo = (quint8)(num);
data.append (hi);
data.append (lo);
}
while(data.count () <8)
{
data.append (QByteArray::fromHex ("20"));
}
qDebug ()<<"string to unicode :"<<QObject::tr("%1").arg (data.toHex ().data ());
return data;
}
//Unicode码转字符串
QString CommonFunction::uniCodeToStr(const QByteArray &data)
{
QByteArray data_1;
for(int i= 0;i<data.length ();i+=2)
{
if(!(data[i] == 0x20 && data[i+1] == 0x20))
{
data_1.append (data[i]);
data_1.append (data[i+1]);
}
}
QString str = data_1.toHex ().data ();
int temp[400];
QChar qchar[100];
QString strOut;
bool ok;
int count=str.count();
int len=count/4;
for(int i=0;i<count;i+=4)
{
temp[i]=str.mid(i,4).toInt(&ok,16);//每四位转化为16进制整型
qchar[i/4]=temp[i];
QString str0(qchar, len);
strOut=str0;
}
qDebug ()<<"unicode to string:"<<strOut;
return strOut;
}
http://blog.csdn.net/liuguangzhou123/article/details/7478088
QT字符编码转换,可用于中文内码传输的更多相关文章
- Qt代码区字符编码转换
在做通讯练习的时候,发现发送给小助手字符乱码,图片如下 本人Qt Creator是UTF-8,需要改成gbk,代码如下 #include<QTextCodec> // 提供字符编码转换 Q ...
- iconv字符编码转换
转自 http://blog.csdn.net/langresser_king/article/details/7459367 iconv(http://www.gnu.org/software/li ...
- day4学python 字符编码转换+元组概念
字符编码转换+元组概念 字符编码转换 #coding:gbk //此处必声明 文件编码(看右下角编码格式) #用来得到python默认编码 import sys print(sys.getdefaul ...
- centos中文乱码修改字符编码使用centos支持中文
如何你的centos显示中文乱码,只要修改字符编码使centos支持中文就可以了,没有这个文件可以创建它,下面是修改步骤 一.中文支持 安装中文语言包: 复制代码 代码如下: yum groupins ...
- Char Tools,方便的字符编码转换小工具
工作关系,常有字符编码转换方面的需要,写了这个小工具 Char Tools是一款方便的字符编码转换小工具,基于.Net Framework 2.0 Winform开发 主要功能 URL编码:URLEn ...
- php 字符编码转换函数 iconv mb_convert_encoding比较
在使用PHP处理字符串时,我们经常会碰到字符编码转换的问题,你碰到过iconv转换失败吗? 发现问题时,网上搜了搜,才发现iconv原来有bug ,碰到一些生僻字就会无法转换,当然了配置第二个参数时, ...
- 编码问题 php字符编码转换类
各种平台和软件打开显示的编码问题,需要使用不同的编码,根据我们不同的需求. php 字符编码转换类,支持ANSI.Unicode.Unicode big endian.UTF-8.UTF-8+Bom ...
- Python—字符编码转换、函数基本操作
字符编码转换 函数 #声明文件编码,格式如下: #-*- coding:utf-8 -*- 注意此处只是声明了文件编码格式,python的默认编码还是unicode 字符编码转换: import sy ...
- 关于web.xml中配置Spring字符编码过滤器以解决中文乱码的问题
当出现中文乱码问题,Spring中可以利用CharacterEncodingFilter过滤器解决,如下代码所示: <!-- Spring字符编码过滤器:解决中文乱码问题 --> < ...
随机推荐
- Java开发环境安装,环境变量
下载地址:www.oracle.com Java 9下载地址:https://www.oracle.com/technetwork/java/javase/downloads/java-archive ...
- dzone Cloud Zone
dzone Cloud Zonehttps://dzone.com/cloud-computing-tutorials-tools-news有一些统计:https://dzone.com/refcar ...
- Java设计模式透析之 —— 单例(Singleton)
写软件的时候经常需要用到打印日志功能,可以帮助你调试和定位问题,项目上线后还可以帮助你分析数据.但是Java原生带有的System.out.println()方法却很少在真正的项目开发中使用,甚至像f ...
- 解决关于archlinux升级至3.16.1,Xorg桌面环境无法进入的问题
[现象]有终端输入username,password后,桌面环境启动失败. [报错]log文件里显示: (EE) Fatal server error: (EE) xf86OpenConsole: V ...
- [Swift]UIAlertController 以及 Swift 中的闭包和枚举
原文地址:http://blog.callmewhy.com/2014/10/08/uialertcontroller-swift-closures-enum/ 在 iOS8 的 SDK 中, UIK ...
- Android学习路径(22)应用Fragment建立动态UI——构建一个灵活UI
当你设计你的应用来支持多个屏幕尺寸.你能够基于可用的屏幕空间通过在不同的布局上重用fragment来优化用户体验. 比如,在一个手机上.使用单面板(一次仅仅显示一个fragment)的用户体验更加合适 ...
- cefsharp 与webbrowser简单对比概述
原文:cefsharp 与webbrowser简单对比概述 有个项目需要做个简单浏览器,从网上了解到几个相关的组件有winform自带的IE内核的WebBrowser,有第三方组件谷歌内核的webki ...
- CSharp获取图形文件的读写
C#是微软发布了一个面向对象.开展对.NET Framework上述高级编程语言.并定于占领在微软开发者论坛(PDC)在首演. C#这是微软研究员Anders Hejlsberg最新成就.C#容貌Ja ...
- WPF特效-粒子动画
原文:WPF特效-粒子动画 WPF实现泡泡龙小游戏效果. /// -Ball to Ball Collision - Detection and Handling /// http:// ...
- WPF 动态模拟CPU 使用率曲线图
原文:WPF 动态模拟CPU 使用率曲线图 在工作中经常会遇到需要将一组数据绘制成曲线图的情况,最简单的方法是将数据导入Excel,然后使用绘图功能手动生成曲线图.但是如果基础数据频繁更改, ...