• 7921阅读
  • 15回复

『求助大侠』  Qt 5.X  中文显示乱码的问题 [复制链接]

上一主题 下一主题
离线neil-wen
 

只看楼主 倒序阅读 楼主  发表于: 2013-08-05
— 本帖被 dbzhang800 从 Qt基础编程 移动到本区(2013-08-05) —
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
//   QTextCodec::setsetDefaultCodec( QTextCodec::codecForName("GBK"));
//    QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));

  编译时,Qt 5.x 已经没有 setsetDefaultCodec,setCodecForTr 两个函数了  , 只留  QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));     编译通过后,界面中文部分出现乱码,请求大神怎么解决??!

离线jdwx

只看该作者 1楼 发表于: 2013-08-05
提示:代码里写中文后患无穷,按照Qt的标准方法翻译也不是很麻烦吧。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线neil-wen

只看该作者 2楼 发表于: 2013-08-05
引用第1楼jdwx于2013-08-05 13:26发表的  :
提示:代码里写中文后患无穷,按照Qt的标准方法翻译也不是很麻烦吧。

   求大侠指教,步骤怎么弄?
离线qixin1227

只看该作者 3楼 发表于: 2013-08-05
LIGUIST翻译
写真正的代码
离线realfan

只看该作者 4楼 发表于: 2013-08-07
把源码文件,保存成UTF8,
不要setCodecForLocale
中文就没问题了
离线dbzhang800

只看该作者 5楼 发表于: 2013-08-07
引用第4楼realfan于2013-08-07 09:05发表的  :
把源码文件,保存成UTF8,
不要setCodecForLocale
中文就没问题了

对非MSVC编译器是这样。但MSVC就不行了

MSVC2003/2005/2008/2010/2012/2013,任意相邻的两个中,没有一个是行为一样的。特别是2005,2012,截止目前完全没办法得到UTF8。
离线祥龙九霄

只看该作者 6楼 发表于: 2013-08-07
我用的是qt5.1的解决中文乱码是用的下面的两行代码解决的,lz可以试下,希望有用。
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForLocale(codec);
离线dbzhang800

只看该作者 7楼 发表于: 2013-08-07
引用第6楼祥龙九霄于2013-08-07 10:35发表的  :
我用的是qt5.1的解决中文乱码是用的下面的两行代码解决的,lz可以试下,希望有用。
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForLocale(codec);


不妨直接去掉这两行代码,相信对你不会有任何影响
离线neil-wen

只看该作者 8楼 发表于: 2013-08-07
Qt版本是5.0或者以上的  
我使用中文代码是这样的: QLabel *Num3 =new QLabel(tr("间谐波频率"));  

去掉或者加上:QTextCodec *codec = QTextCodec::codecForName("UTF-8");
                            QTextCodec::setCodecForLocale(codec);

还是显示乱码!    求大神赐教
离线dbzhang800

只看该作者 9楼 发表于: 2013-08-07
直接看本版置顶吧, http://www.qtcn.org/bbs/read-htm-tid-54663.html

网络上关于这个的错误用法太多了。
离线neil-wen

只看该作者 10楼 发表于: 2013-08-15
引用第9楼dbzhang800于2013-08-07 15:28发表的  :
直接看本版置顶吧, http://www.qtcn.org/bbs/read-htm-tid-54663.html
网络上关于这个的错误用法太多了。

版主 ,试过这个方法 ,还是不行
离线dbzhang800

只看该作者 11楼 发表于: 2013-08-15
引用第10楼neil-wen于2013-08-15 09:50发表的  :
版主 ,试过这个方法 ,还是不行


请提供以下信息:

1. 所用的编译器版本
2. 所用input-charset,即源文件的所用的编码

如果可能,不妨给出你测试用的完整例子。连main函数#include等在内应该也就20-30行代码吧
离线neil-wen

只看该作者 12楼 发表于: 2013-08-16
Qt Creator 2.7.2     Based on Qt 5.1.0 (32 bit)
Qt 5.1.0 GCC 32bit
gcc-4.7  gcc++  gcc.real

#include "inter_harmonic.h"
#include "ui_inter_harmonic.h"
#include "global.h"
#include "systerm_parameter.h"
#include "terminal_manage.h"
#include <QtGui>
#include <QtCore>
#include <QtWidgets>
...........
...........

    QTextCodec::setsetDefaultCodec( QTextCodec::codecForName("GBK"));
    QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
...........
...........
        QLabel *Num4 =new QLabel();
        Num4->setAlignment(Qt::AlignCenter);
        Num4->setStyleSheet("color:#ffffff;font:12pt;");
        Num4->setText(tr("电压含有率(%)"));
        ui->inter_statistical_table->setCellWidget(1,1,Num4);

“电压还有率” 显示为   乱码

离线dbzhang800

只看该作者 13楼 发表于: 2013-08-16
晕了,你还是告诉我你按照哪个帖子做的吧。基本上我提到的不该做的你都做了。
离线neil-wen

只看该作者 14楼 发表于: 2013-08-19
引用第9楼dbzhang800于2013-08-07 15:28发表的  :
直接看本版置顶吧, http://www.qtcn.org/bbs/read-htm-tid-54663.html
网络上关于这个的错误用法太多了。

请大神息怒,试过上面的方法,也不行
离线dbzhang800

只看该作者 15楼 发表于: 2013-08-19
引用第14楼neil-wen于2013-08-19 11:38发表的  :
请大神息怒,试过上面的方法,也不行

请提供以下信息:

1. 所用的编译器版本
2. 所用input-charset,即源文件的所用的编码

如果可能,不妨给出你测试用的完整例子。连main函数#include等在内应该也就20-30行代码吧
快速回复
限100 字节
 
上一个 下一个