2011-06-16 54 views
1

我想直接將非ASCII Unicode字符嵌入到字符串文字中並在printf中使用它們。這意味着我的源代碼必須保存在utf-8或utf-16中。 Visual Studio 2010不支持以任何格式編輯和保存C++源文件。但編譯&執行時,它不會產生正確的Unicode字符。編譯器是否支持嵌入unicode字符的字符串文字?Visual Studio 2010是否支持Unicode字符串中的Unicode字符的C++源代碼

例如

wprintf(L" chinese characters:中文字\n"); the trailing chinese characters cannot be displayed 
+0

可能重複的[utfcpp和Win32廣泛的API](http://stackoverflow.com/questions/3329718/utfcpp-and-win32-wide-api) – 2011-06-16 22:18:01

回答

0

最簡單的方法來測試廣泛的文字是跳過的printf格式化部分,並給您的字符串直奔OS:WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE), L" chinese characters:中文字", ...

0

#pragma setlocale可能是您需要的。

1

我沒有中文版的Windows來測試,所以這是完整的猜測。

控制檯和文件輸出功能知道文件不是用UTF-16編碼的,所以他們試圖在輸出之前將字符轉換爲代碼頁。就像默認語言環境是「C」而不是基於系統設置的任何東西一樣,默認代碼頁也可能是不包含中文字符的不合適語言。

有一個功能SetConsoleOutputCP來更改控制檯的代碼頁。目前還不清楚這個函數是改變了實際控制檯窗口使用的代碼頁,還是隻影響了程序中的Unicode轉換。