5、QT 中文乱码

在 Qt 代码的 const char* 这种窄字符串中使用中文就会发现显示的全是乱码.

 

在 Qt5 之前, 大多数人通过下面这三句代码来解决:

QTextCodec::setCodecForTr(...)

QTextCodec::setCodecForCStrings(...)

QTextCodec::setCodecForLocale(...)
 
然后这三句代码是有安全隐患的, 下面的文章都有说明:

 

但是在 Qt5 之后, 移除了 setCodecForTr 函数, 之前的 setCodecxxx 各种副作用都不再存在, 而且中文问题更为简单:

QString s1 = QStringLiteral("中文");

QString s2 = QString::fromWCharArray(L"中文");

 

这两种写法都是可以的.

image
 
因为在 VS 中鼓励大家使用 TEXT/_T 宏而不用L, 所以 QStringLiteral 用的相对要多点.
 

关于 Qt 中文的问题, 可参考下面两篇文章:

zz 解释QStringLiteral

QString 乱谈(3)-Qt5与中文

你可能感兴趣的:(中文乱码)