1.qt create文件使用的是UTF-8编码(英文占一个字节,汉字占三个字节),但MSVC编码是windows本地的字符集如GB2312(英文 占1字节 中文占 2字节)。两者不兼容,出现乱码。
2. vs里面的unicode字符集就是采用的utf-16(用二个字节存储一个字符)或者说是usc-2.
3.QString 内部是以 16 位的 QChar 来存储(Unicode 的一种,但不是 utf-8,即utf-16)
4.8,QString转入转出函数,即生成QString和由QString生成其他字符(如char)的函数
toUtf8是输出UTF-8编码的字符集
Local8bit是本地操作系统设置的字符集编码,一般为GB2312.
解决方案:
第一步将工具菜单-——>选项——>文本编辑器里按下图修改:
第二步:
下面两种办法只能2选1.切不可将两种方法混合使用
第一种办法:
使用QStringLiteral()宏或者QString::fromLocal8Bit()
封装字符串。需注意的是不能再使用tr()函数用于编译字符串。
QString str = QStringLiteral("测试");
第二种办法.
强行MSVC编译器使用UTF-8编码生成可执行文件,需要在每个用到字符串的头文件和源代码前面加上
#if _MSC_VER >=1600
#pragma execution_character_set("utf-8")
#endif
这种方法可以使用tr()函数。
第三种
直接在.pro工程文件中增加msvc字符集设置
msvc{
QMAKE_CXXFLAGS += -utf-8
}