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字符编码过滤器:解决中文乱码问题 --> < ...
随机推荐
- React Native细节记录
1.环境搭建部分 安装完node后建议设置npm镜像以加速后面的过程(或使用***工具).注意:不要使用cnpm!cnpm安装的模块路径比较奇怪,packager不能正常识别! npm config ...
- 基于go语言的心跳响应
我们在使用tcp ip 通讯的时候,都需要使用心跳机制来判断服务器与客户端的连接状态,如果服务器的心跳超时等,会做出重新连接等机制, 基于这种问题,我今天给大家推荐了一个基于go语言的心跳响应机制,废 ...
- How to provide highlighting with Spring data elasticsearch
How to provide highlighting with Spring data elasticsearch @Test public void shouldReturnHighlighted ...
- C#中的并发编程知识
= 导航 顶部 线程 Task async/await IAsyncResult Parallel 异步的回调 顶部 线程 Task async/await IAsyncResult Pa ...
- jQuery memory&unique&stopOnfalse
memory:保持以前的值,将添加到这个列表的后面的最新的值立即执行调用任何回调 (像一个递延 Deferred). 回调函数是从异步队列Deferred分离出来的,所以很多的接口设计都是为了契合De ...
- MFC和Qt优缺点 (MFC几乎没有优点、全面下风)
在网上看到的,拿来和大家一起讨论下. 我曾经使用过来开发过软件,我想和大家分享我使用他们时所体会的不同之处. 我并非一个职业作家,这篇文章可能看起来不如专业的杂志和网站上的那么条理清晰.但是,我在这里 ...
- 深度学习实战 Tricks
1. 梯度消失与梯度爆炸 gradient clipping 梯度爆炸:min(grad_max,grad) grad_max:梯度上限 梯度消失:max(grad_min, grad) grad_m ...
- python中的验证码识别库PyTesser
PyTesser PyTesser is an Optical Character Recognition module for Python. It takes as input an image ...
- WPF利用HelixToolKit后台导入3D模型
原文:WPF利用HelixToolKit后台导入3D模型 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/m0_37591671/article/de ...
- 1407251735-hd-美素数.cpp
#include<stdio.h> int s1[1005000],s2[1005000]; //如果main该阵列外部函数中定义,全局变量的数组,自己主动初始化数组0: //在main里 ...