QT学习--系统操作--中文字符

这篇博客探讨了在QT开发中遇到的中文字符问题,包括字符集的介绍,如GBK、Unicode、UTF-8和ISO-8859-1。着重讲解了QString在处理中文字符时的转换函数,如FromLocal8Bit、toLatin1和QObject::tr,并讨论了Qt显示乱码的原因,如编码不一致。总结了确保不出现乱码的关键在于源码、编译器和显示软件的编码一致性。
摘要由CSDN通过智能技术生成


前言

据说QT中文字符问题是QT工程问题的三座大山,最近使用QAxObject中的dynamicCall()控制操作excel时,总是保存时出错。已经命名好的excel保存关闭时又弹出保存对话框。原因是:

pWorkbook->dynamicCall("SaveAs (const QString&,int,const QString&,const QString&,bool,bool)",
				QDir::toNativeSeparators(sXlsFile), 56, QString(""), QString(""), false, false);

调用保存时,sXlsFile命名非法保存失败,检测sXlsFile字符串去掉非法字符后保存不会有问题。

cell->dynamicCall("SetValue(const QVariant&)", strData); //修改单元格的数据

调用保存单元格数据时,引起系统异常。
怀疑和strData中包含非法换行符等有关。


一、字符集

转自:CSDN博客
gb18030字符集兼容了gbk字符集,以两个字节表示一个文字。windows系统可能使用的就是这两种的一种。

unicode字符集以2个或以上的字节表示一个汉字。

通用字符集(Universal Character Set, UCS)是由ISO制定的ISO 10646(或称ISO/IEC 10646)标准所定义的标准字符集。UCS-2用两个字节编码,UCS-4用4个字节编码。

utf8字符集以2个或以上的字节表示一个汉字。实际上具体的数值和unicode有很大的相关性。

ISO-8859-1编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF。亦称为Latin1。

二、QString中使用的字符转换

1.FromLocal8Bit

一般中文在QT中显示乱码会用这个函数做一下转换:

QProgressDialog  m_process(NULL);
m_process.setWindowTitle(QString::fromLocal8Bit("请稍后"));

QT助手的解释

[static] QString QString::fromLocal8Bit(const char *str, int size = -1)
Returns a QString initia
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值