用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")
