linux下QT程序与windows程序中文字符串传输编码问题的一点解决,utf8转gbk
2012-10-13 10:45
1021 查看
一般linux下默认utf8编码,所以我们在linux下写QT程序下一般会加上这两句:
这句有时也可能加上:
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
具体什么含义大家稍微查查就明白。
如上设置之后,在linux上显示基本中文基本没问题,但是当我们需要跟windows下的程序进行字符串传输的时候,直接传QString过去,在windows下中文就会乱码,原因就是windows默认gbk编码,所以我们传送之前要将QString的编码转换一下:
QTextCodec *GBKcodec=QTextCodec::codecForName("GBK");
QTextCodec::setCodecForLocale(GBKcodec);
sMessage = GBKcodec->toUnicode(sMessage.toLocal8Bit());//sMessage是要发送的字符串
当然我们想我们的linux下的程序以后显示正常,在发送完毕之后,要补回这句:
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8")); QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
这句有时也可能加上:
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
具体什么含义大家稍微查查就明白。
如上设置之后,在linux上显示基本中文基本没问题,但是当我们需要跟windows下的程序进行字符串传输的时候,直接传QString过去,在windows下中文就会乱码,原因就是windows默认gbk编码,所以我们传送之前要将QString的编码转换一下:
QTextCodec *GBKcodec=QTextCodec::codecForName("GBK");
QTextCodec::setCodecForLocale(GBKcodec);
sMessage = GBKcodec->toUnicode(sMessage.toLocal8Bit());//sMessage是要发送的字符串
当然我们想我们的linux下的程序以后显示正常,在发送完毕之后,要补回这句:
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
相关文章推荐
- Windows下Qt程序在Linux环境下运行中文乱码解决
- windows下Qt代码移植到linux下的中文乱码问题解决
- 解决Windows下Arm下Linux下Qt4程序的中文乱码问题
- Linux/Windows下MySQL5.6的修改字符集编码为UTF8(解决中文乱码问题)
- QT学习——qt creator修改程序编码(解决中文乱码问题)的方法
- 〖Windows〗Linux的Qt程序源码转换至Windows平台运行,编码的解决
- Linux下MySQL 5.6的修改字符集编码为UTF8(彻底解决中文乱码问题)
- java实现AES加密(解决中文解密后乱码问题,解决传输字符串后解密报错的问题)
- linux与windows之间传输文件工具rz上传大文件失败问题解决方案
- 解决Windows记事本打开Linux程序注释乱码排版混乱的问题
- url带中文参数请求在windows下和linux下的编码问题
- Linux下MySQL的修改字符集编码为UTF8(解决中文乱码问题)
- java linux和windows下文件路径间隔符的写法——解决linux下程序在windows下运行时的上传文件出错问题
- Linux 与 Windows下QT 显示MySQL 中文乱码问题
- nodejs爬虫程序解决gbk等中文编码问题
- Qt Windows/Linux支持中文编码
- 解决QT中文字符串在osg中显示乱码的问题
- windows下eclipse工程转到linux下源代码注释以及输出字符串中中文乱码解决方法
- Linux_解决windows传送到linux下中文文件名及文件内容乱码问题
- 解决Windows记事本打开Linux程序注释乱码排版混乱的问题