Qt使用MSVC編譯器不能正確顯示中文的解決方案

用VisualStudio作爲IDE,使用Qt框架,顯示中文,會出現亂碼的狀況。框架

緣由:MSVC編譯器雖然能夠正常編譯帶BOM的UTF-8編譯的源文件,可是生成的可執行文件的編碼是Windows本地字符集,好比GB2312。在可執行文件中,字符串是以GB2312編碼的,而可執行程序執行到該語句時,對這個字符串倒是以UTF-8解碼的,這樣就會出現亂碼。函數

解決方法有兩種:編碼

1.使用QStringLiteral(str)宏封裝字符串,但此種方法不能使用tr()函數用於翻譯字符串。翻譯

QString str = QStringLiteral("使用中文");utf-8

2.強制MSVC編譯器採用UTF-8編碼生成可執行文件,須要在每一個使用到中文字符串的頭文件和源文件的前部加入以下語句:字符串

#pragma execution_character_set("utf-8")編譯器