用VisualStudio做为IDE,使用Qt框架,显示中文,会出现乱码的情况。
原因:MSVC编译器虽然可以正常编译带BOM的UTF-8编译的源文件,但是生成的可执行文件的编码是Windows本地字符集,比如GB2312。在可执行文件中,字符串是以GB2312编码的,而可执行程序执行到该语句时,对这个字符串却是以UTF-8解码的,这样就会出现乱码。
解决方法有两种:
1.使用QStringLiteral(str)宏封装字符串,但此种方法不能使用tr()函数用于翻译字符串。
QString str = QStringLiteral("使用中文");
2.强制MSVC编译器采用UTF-8编码生成可执行文件,需要在每个使用到中文字符串的头文件和源文件的前部加入如下语句:
#pragma execution_character_set("utf-8")