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字符编码过滤器:解决中文乱码问题 --> < ...
随机推荐
- js取json对象的键和值
//构建一个json对象 var pinpai = { "0":{"美的":49,"三星":35,"海信":25,&qu ...
- TensorFlow 需注意的细节问题
1. 数据类型 不带小数点的数默认为 int32,带小数点的数默认为 float32:
- sparksql json 合并json数据
java public class Demo { private static SparkConf conf = new SparkConf().setAppName("demo" ...
- opencc 繁体简体互转 (C++)
繁体字通常采用BIG5编码,简体字通常采用GBK或者GB18030编码,这种情况下,直接使用iconv(linux下有对应的命令,也有对应的C API供编程调用)就行.对于默认采用utf-8 ...
- Python 格式化输出 —— 小数转化为百分数
比如将 0.1234 转化为 12.34% 的形式: rate = .1234 print('%.2f%%' % (rate * 100)) 第一个百分号和 .2f 相连,表示浮点数类型保留小数点后两 ...
- RadioButton分组的实现
原文:RadioButton分组的实现 XAML如下 <StackPanel> <RadioButton GroupName="colorgrp"> ...
- March 29th, 2015, Thread Name is odd by increasing 1
public class Fabric extends Thread{ public static void main(String args[]){ Thread t = new Thread(ne ...
- 半监督学习(semi-supervised learning)
P(x)P(x,y)}⇒P(y|x) 自 P(x) 生成的无标签样本: 自 P(x,y) 生成的标记样本:
- 给WPF示例图形加上方便查看大小的格子
原文:给WPF示例图形加上方便查看大小的格子 有时,我们为了方便查看WPF图形的样式及比例等,需要一些辅助性的格线,置于图形.图像的背景中. 比如下图,就是为了更清晰地查看折线的图形,我们画了用于标示 ...
- StreamDM:基于Spark Streaming、支持在线学习的流式分析算法引擎
StreamDM:基于Spark Streaming.支持在线学习的流式分析算法引擎 streamDM:Data Mining for Spark Streaming,华为诺亚方舟实验室开源了业界第一 ...