create显示中文乱码 qt_关于Qt显示中文乱码问题

本文介绍了在Qt应用程序中遇到中文乱码的问题及其原因,分析了由于编码不一致导致的乱码现象,并提出通过使用Qt Linguist创建多语言支持来彻底解决乱码问题。详细步骤包括使用tr()函数标记字符串,加载QTranslator,以及如何生成和使用翻译文件。
摘要由CSDN通过智能技术生成

一直都在代码中使用GBK编码来解决Qt显示中文的问题,即在main()函数中添加下面几句:

然后在发布的应用程序文件夹下建立plugins\codecs,然后将qcncodecs4.dll放到该目录下,也没再出现乱码。但是后来客户反馈说存在乱码。为什么会出现乱码呢?

原来如此。比如写了“汉字”两个字,然后以GBK形式保存在计算机的存储设备中(“汉字”的GBK编码是BA、BA、D7、D6)。然后在读取时,计算机中的二进制码“BA、BA、D7、D6”却不是以同样的GBK形式被解释成“汉字”两个字符。比如说以ISO-88591形式被读取,那么“BA、BA、D7、D6”就会被解释为四个西欧文字了。如果将程序发布到一些非简体中文的国家或地区,可能出现对方的机器上根本没有安装任何中文的编码格式,所以就会出现乱码。

那么,如何彻底解决乱码问题呢?Qt提供了强大的多国语言工具Qt Linguist。

一、编写源码:

实现多语言,1)、首先必须保证每一个用户可见的字符串都使用了tr()函数;2)、在应用程序启动时使用QTranslator载入一个翻译文件(.qm)。如:

#include

#include

#include

int main(int argc, char *argv[])

{

QApplication app(argc, argv);

//载入翻译文件

QTranslator translator;

bool bLoaded = translator.load("readnv_chs");//语言包文件,由linguist工具生成

if (!bLoaded)

{

QMessageBox::warning(NULL,QApplication::tr("Load File Failed"), QApplication::tr("Load readnv_chs.qm Failed!"));

}

app.installTranslator(&translator);

mainwindow w;

w.show();

return app.exec();

}

注意:翻译文件加载的位置必须在界面实例化之前完成。编写好代码后:

二、生成翻译文件:

1)、在.pro文件中添加TRANSLATIONS+=readnv_chs.ts。指明在项目中生成翻译源文件readnv_chs.ts。<.ts>。

2)、执行命令:lupdate -verbose xx.pro。从应用程序的源代码中提取所有用户可见的字符串,生成相应的.ts文件(readnv_chs.ts)。

3)、使用Qt Linguist翻译该应用程序。使用linguist打开readnv_chs.ts文件,对tr()函数的字符串参数进行翻译,然后点击release,生成相应的.qm文件,即readnv_chs.qm。然后将.qm文件放在应用程序目录下即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值