我們的引擎中內置了一個評論系統,它允許程序員爲各種暴露的變量/對象提供註釋,然後由GUI前端用於工具提示和幫助。如何處理C++中的Unicode字符
最近,某些工具提示開始崩潰,經過大量浪費時間後,我將其跟蹤到字符:’
,除非我誤會,否則它是unicode字符,並且在ASCII中不可用。
考慮到this answer考慮,我假設wstring
將解決問題。在對更大的項目進行更改之前,我創建了一個測試項目,以查看wstring
是否可以解決問題。雖然該項目不會崩潰,但行爲並非如預期的wstring
。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string someString = "successive attack that DOESN’T result";
wstring someWString = L"successive attack that DOESN’T result";
cout << someString << endl;
wcout << someWString << endl;
return 0;
}
//Console Output//
successive attack that DOESNÆT result
successive attack that DOESNPress any key to continue . . .
我讀this article前一段時間,我想我明白與字符集相關的問題,但顯然並非如此。我希望能夠解決這個問題,並且很好地解釋發生了什麼以及將來如何避免類似的問題。
也許源文件本身不正確編碼編碼。它的編碼是什麼? – 2012-02-10 16:08:42
IIRC控制檯不支持非代碼頁字符。你的工具提示是否有效? – Rup 2012-02-10 16:10:05
@NiklasB .:我不確定我會如何檢查?我正在使用Visual Studio 2008在上面的示例中創建一個新項目和源文件。我不知道如何檢查源文件本身的編碼...?在項目屬性中,我嘗試了'使用多字節字符集'和'使用Unicode字符集',輸出沒有區別。 – Samaursa 2012-02-10 16:13:03