QT下中文字符编码的转换
来源:互联网 发布:网络优化工程师容易吗 编辑:程序博客网 时间:2024/06/09 18:16
通常在qt程序的main函数中,经常会有设置字符编码的函数:
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB18030")); //为QObject::tr设置字符编码
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB18030")); //如果在linux上,设置local为gb18030可能会导致读取
//或输出的unicode中文字符不能正确显示
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB18030")); //为QString设置字符编码,默认情况下为Latin1
比如之后,就可以输入
QLabel *testLabel = new QLabel( tr("测试") );
这样,不管是在windows上还是在X11平台上,就可以看到正确的显示结果了。
另外,在windows下,代码中输入的字符默认中文编码是GBK,但Linux上默认的中文编码的UNICODE,所以将windows上编写的含有中文qt代码,拿到linux上的QT creator修改时,首先要选择中文编码格式,否则代码中的汉字就会是乱码。
常用的GBK转换UTF8的代码如下,用了http://blog.csdn.net/ACCP_2008123456/archive/2010/11/05/5988704.aspx上的例子
QTextCodec *gbk = QTextCodec::codecForName("gb18030");
QTextCodec *utf8 = QTextCodec::codecForName("utf-8");
QTextCodec::setCodecForTr(gbk);
QTextCodec::setCodecForLocale(gbk);
QString utfStr = QObject::trUtf8(readByte); //utf-8
QString gbkStr = QObject::tr("中文"); // gbk
QString utf2gbk = gbk->toUnicode(readStr.toLocal8Bit()); // utf8 conver gbk
QString gbk2utf1 = utf8->toUnicode(utf2gbk.toUtf8()); // gbk convert utf8
QString g2u = gbk->toUnicode(gbk->fromUnicode(readStr)); // gbk convert utf8
- QT下中文字符编码的转换
- QT下中文字符编码的转换
- QT的字符编码转换 .
- QT的字符编码转换
- 字符编码转换 QT
- QT字符编码转换,可用于中文内码传输
- QT字符编码转换,可用于中文内码传输
- 中文字符编码的相互转换
- QT 下把编辑框内的中文字符转换为 char*
- golang中文字符编码转换
- java下的字符编码转换总结
- Linux 下的字符编码转换
- 上传中文字符到服务器的编码转换的解决方法
- Qt的中文编码
- Qt的中文编码
- 中文字符编码的相互转换(一)
- 中文字符编码的相互转换(二)
- 中文字符编码的相互转换(三)
- 简单了解web缓存工具: mamcache 和EhCache 和Terracotta
- 利用腾讯接口获取IP信息
- 服务器日志切割问题
- Linux下Php5 Mysql5 Apache2 GD2编译安装步骤(转)
- Collection源码学习之toArray方法
- QT下中文字符编码的转换
- 一个测试环境
- nginx升级到 0.8.53 之后,使用老的配置出现duplicate MIME type "text/html"问题的解决办法
- ThreadLocal-分析
- sed命令
- PHP的四书五经(前言)
- 在JAVA中读取URL归纳
- load gff to a sqlite file
- TNS-12535: TNS: 操作超时_win7