[转帖]Qt界面显示中文乱码问题_Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2981 | 回复: 0   主题: [转帖]Qt界面显示中文乱码问题        下一篇 
匿名用户
发表于: IP:您无权察看 2013-7-9 11:22:18 | [全部帖] [楼主帖] 楼主

QTextCodec::setCodecForTr()
QTextCodec::setCodecForCStrings()
QTextCodec::setCodecForLocale()

#include <QApplication>
#include <QDialog>
#include <QLabel>
#include <QTextCodec>

int main(int argc, char *argv[])
{
       QApplication a(argc, argv);

       //Set Encode
       QTextCodec::setCodecForTr(QTextCodec::codecForName("system"));
       QTextCodec::setCodecForCStrings(QTextCodec::codecForName("system"));
       QTextCodec::setCodecForLocale(QTextCodec::codecForName("system"));

       QDialog w;
       QLabel label(&w);
       label.setText("Hello World!你好,Qt!"); //attention!!

       w.show();
       return a.exec();
}

;

另外一种方法,《QT快速入门》一书中的方法,只需要一个set,但是在label中填写文字的时候,需要

QObject::tr()


QTextCodec类提供了文本编码的转换功能。QTextCodec类中的静态函数setCodecForTr()用来设置

QObject::tr()函数所要使用的字符集。

QTextCodec::codecForLocale()返回了系统指定的字符集,QtextCodec::setCodecForTr()设置tr()用到的字符集。

总之,为了显示中文,需要设置字符集,然后使用QObject::tr()函数将字符串进行编码转换。

#include <QApplication>
#include <QDialog>
#include <QLabel>
#include <QTextCodec>

int main(int argc, char *argv[])
{
       QApplication a(argc, argv);

      
       QTextCodec::setCodecForTr(QTextCodec::codecForLocale()); //set
       QDialog w;
       QLabel label(&w);
       label.setText(QObject::tr("Hello World!你好,Qt!")); //attention!! QObject::tr() used.
       w.show();
       return a.exec();
}

;

Q:在qt的IDE中编写程序,如上,运行没问题,但是但是换成直接用command line编译,代码是直接拷贝过去的,运行出问题额:


A:后来发现时文件默认编码问题:

用qt直接创建的文件默认编码为ANSI
而win7中直接创建文本文件默认编码为UTF-8
我把自己创建的文件另存为ANSI格式之后,再编译运行,没有问题了

;;


赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论