QT5對話框的中文字符串【亂碼】 (error: C2001: 常量中有換行符)

問題解決:對話框的中文字符串【亂碼】 (error: C2001: 常量中有換行符)
假設編譯環境:QT5+vs2015

項目配置:

默認編碼:UTF-8

UTF-8 BOM: 目前存在了則保留

 

如果你在使用VS2008(需要打補丁)、VS2010、VS2013、VS2015(未安裝Update2),或者你的源碼需要兼容這些編譯器,當你在Qt5的C++源文件內使用中文時,你需按以下步驟操作。(不止是中文,其實你完全可以在代碼中使用日韓法俄語等等各國語言)

1. 源文件保存爲帶BOM的UTF-8格式(推薦轉換軟件coolEdit)
   如果你要支持這些VS版本,且需要跨其他平臺,保存爲帶BOM的UTF-8是必不可少的。

2. 而後,源碼中的所有字符串常量使用 QStringLiteral 宏進行包裹,如:
   QString s1 = QStringLiteral("中國");

   但是如果,除了寬字符串外,你還需要使用窄字符串,比如
   QString s2 = tr("中國");
   QByteArray s3 = "中國";
   const char * s4 = "中國";
   edit.setText("中國");
   
   那麼,你需要:
1. Qt5要求窄字符串執行字符集爲 UTF8
   在包含文件或CPP文件添加下面3行代碼 

    #if _MSC_VER >= 1600
    #pragma execution_character_set("utf-8")
    #endif

2. [MSVC] 如果你不在用MSVC,請跳過該步驟

如果你在使用MSVC2005或MSVC2012,請換用其他版本的MSVC
如果你在使用MSVC2008,請升級到最新的SP1,並安裝 KB980263 補丁
如果你在使用MSVC2010、MSVC2013或更新版本,本步驟不需要額外操作

具體細節,請參考 http://blog.csdn.net/dbzhang800/article/details/7540905

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章