Qt 中文乱码问题 个人总结

我用的是Qt4,Qt Creator Documentation 2.4.1。

实际运用参考:传送门

第一个问题是控件显示中文为乱码

解决方法,合适位置插入以下代码(我一般加在main.cpp中)

#include 

QTextCodec *codec = QTextCodec::codecForName("utf-8");
// 告诉Qt本地系统字符编码
QTextCodec::setCodecForLocale(codec);
// 告诉Qt程序中所使用的字符串的字符编码
QTextCodec::setCodecForCStrings(codec);
// 告诉Qt外部的字符编码
QTextCodec::setCodecForTr(codec);

第二个问题是输出中文显示乱码

我的方法是QString、QByteArray和char *的转换,如何转换参考:QT:QString、QByteArray和char *的转换

以下代码转自https://blog.csdn.net/light1028/article/details/7899541

char*     --------------QByteArray(const char*)-----------> QByteArray
char* str;
QByteArray byte(str);


char*     --------------QString(const char*)-------------->QString
char* str;
QString string(str);


QByteArray   -------------data()-------------------->char*
QByteArray byte;
char* str = byte.data();


QByteArray ------------QString()------------------->QString
QByteArray byte;
QString string(byte);


QString --------------toAscii()--------------------> QByteArray
QString string;
QByteArray byte = string.toAscii();


QString -------------qPrintable()------------------>char*
QString string;

思路是通过QByteArray字符数组做“中间商”,确实解决了中文乱码问题

实际运用如下图

Qt 中文乱码问题 个人总结_第1张图片

Qt 中文乱码问题 个人总结_第2张图片

你可能感兴趣的:(笔记,Qt)