1、常见的字符编码
windows系统默认使用ANSI(ASKII、GBK)
Linux系统默认使用utf-8
Qt内部使用unicode
注意: 在实际开发时,所用的编码一般不会是Unicode,和Qt内部的字符编码不一致,直接显示“中文字符串”可能会出现乱码
注意: 如果使用utf-8编写程序时,在使用"const char*" 字符串构建Qt内部使用QString 字符串时,默认会使用fromutf8()函数自动转换成Qt内部的Unicode编码,可以直接显示中文字符串;但是如果编写代码时使用的不是utf-8,就会显示乱码。
2、字符串编码转换QTextCodec
QByteArray encodedString = "中文编码字符串";
//创建编码对象
QTextCodec *codec = QTextCodec::codecForName("GBK");
//使用toUnicode()函数完成编码转换
QString string = codec->toUnicode(encodedString);
CSDN QT开发文章推荐:Qt开发必备技术栈学习路线和资料
示例:
#include <QAppplication>
#include <QPushButton>
#include <QTextCodec>
int main(int argc, char **argv)
{
QApplication app(argc, argv);
//1)创建编码对象
QTextCodec* coder = QTextCodec::codeForName("GBK");
//2)使用toUnicode()函数转换
QString str = coder->toUnicode("我是一个按钮!");
QPushButton button(str);
button.show();
return exec();
}