在 Qt 代码的 const char* 这种窄字符串中使用中文就会发现显示的全是乱码.
在 Qt5 之前, 大多数人通过下面这三句代码来解决:
QTextCodec::setCodecForTr(...) QTextCodec::setCodecForCStrings(...) QTextCodec::setCodecForLocale(...)
然后这三句代码是有安全隐患的, 下面的文章都有说明:
但是在 Qt5 之后, 移除了 setCodecForTr 函数, 之前的 setCodecxxx 各种副作用都不再存在, 而且中文问题更为简单:
QString s1 = QStringLiteral("中文"); QString s2 = QString::fromWCharArray(L"中文");
这两种写法都是可以的.
因为在 VS 中鼓励大家使用 TEXT/_T 宏而不用L, 所以 QStringLiteral 用的相对要多点.
关于 Qt 中文的问题, 可参考下面两篇文章:
时间: 2024-10-26 01:31:27