关闭

qt 字符串编码方式转换

1338人阅读 评论(0) 收藏 举报
分类:

有些时候字符串编码方式不一样可能会导致汉字输出乱码,具体解决方式如下:

如果是从QByteArray转到字符串,可以用以下方式:

    QFile file("FileName");

    QTextCodec *codec = QTextCodec::codecForName("GBK");

    QString line = codec->toUnicode(file.readLine());

在qt的help中toUnicode有几种使用方法:

QString QTextCodec::toUnicode(const QByteArray &a) const
Converts a from the encoding of this codec to Unicode, and returns the result in a QString.
QString QTextCodec::toUnicode(const char *chars) const
This is an overloaded function.
chars contains the source characters.
QString QTextCodec::toUnicode(const char *input, int size, ConverterState *state = Q_NULLPTR) const
Converts the first size characters from the input from the encoding of this codec to Unicode, and returns the result in a QString.

The state of the convertor used is updated.

以上是在局部范围内做的编码方式改变,如整个工程可使用一个编码方式,那么可以在构造函数中直接使用:

QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));

注意:在一个cpp文件中修改后会影响整个工程。


如果在代码中采用整体设置QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));对整个工程的编码做了限定之后,某一个局部的编码出错的话,可使用上述局部编码的方式进行局部修改,不会影响其他大局!

0
0
查看评论

qt实现转换文件字符集编码

  • 2013-05-23 21:56
  • 482KB
  • 下载

QT下中文字符编码的转换

通常在qt程序的main函数中,经常会有设置字符编码的函数:QTextCodec:: setCodecForTr(QTextCodec:: codecForName("GB18030"));  //为QObject::tr设置字符编码QTextCodec:: se...
  • vah101
  • vah101
  • 2010-12-23 11:35
  • 14152

Qt creator 如何支持中文编码(Qt4和Qt5解决方法不同)

一、首先讲Qt5:     首先Qt5是直接支持中文的,用tr(“输入中文即可”)包含就能显示中文(不用像Qt4一样添加修改代码)     ps:但是我里边有中文符号“:”冒号时就会报错,,求大神讲解问什么?提示如下: &...
  • hyqsong
  • hyqsong
  • 2015-07-30 10:46
  • 3202

Qt 获取字符串的UTF8编码值

看到群里有人在问怎么获取字符串的unicode16编码值  自己测试了下 熟悉了下函数 ui->setupUi(this); QString s = QString::fromUtf8("推广礼包"); QString uni...
  • hellogdut
  • hellogdut
  • 2014-04-12 21:31
  • 1171

Qt入门之utf8与unicode转换

转载自http://m.blog.csdn.net/blog/u011791262/25040271 一、几种编码的了解 参考博客http://blog.csdn.net/polarman/article/details/1593159 二、简单的认识下QByteA...
  • Andy_baby
  • Andy_baby
  • 2015-07-02 16:20
  • 6508

QT的字符编码转换

开发的终端需要接入两个外设,二代证读取设备和打印机。 让人郁闷的是,两个设备的字符编码与终端系统不一致,一开始耗了不少时间,后来才注意到字符编码的问题。 二代证读出来的数据都是用unicode编码的,而打印子要求穿过去的数据要转换成unicode编码。 查阅了help文档,发现QT...
  • alan00000
  • alan00000
  • 2014-07-07 16:56
  • 1367

分享一点代码(Qt 中GBK和UTF8的转换)

日前发现,直接将GBK编码QString通过toUtf8转码后发现时乱码,查找资料后发现直接转换时有问题的,写了几个函数已供使用: #include inline QString GBK2UTF8(const QString &inStr) { QTextCodec *gbk...
  • ak47zhangzhiwei
  • ak47zhangzhiwei
  • 2012-08-22 13:41
  • 18317

Qt中文编码和QString类Unicode编码转换

1 window中文GBK编码和Unicode编码转换 //GBK‐> QString QString str = QString::fromLocal8Bit("新浪微博"); //QString ‐>...
  • g423tgl234
  • g423tgl234
  • 2016-08-16 16:38
  • 9727

Qt5中的字符串乱码问题

先例举几种Qt5中QString使用汉字的可能方法与结果: (以下结果适用用MSVC编译,工程使用Unicode字符集或多字节字符集的情况)  //可以看出,与工程使用何种字符集无关 测试代码 源文件ASCII编码保存 源文件UTF-8无BOM保存 源文件UTF-8且有B...
  • u011519892
  • u011519892
  • 2013-11-29 20:54
  • 3135

【Qt】字符编码、乱码的一点总结

QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"...
  • aqtata
  • aqtata
  • 2013-06-27 09:52
  • 5301
    个人资料
    • 访问:11396次
    • 积分:246
    • 等级:
    • 排名:千里之外
    • 原创:13篇
    • 转载:3篇
    • 译文:0篇
    • 评论:0条
    文章分类