2011-07-19 41 views
3

是否有統一,MBCS之間切換的任何直接後果,未設置爲VS C++編譯器設置配置屬性 - >常規 - >字符集,除了_ UNICODE的設置,_ MBCS和_ T宏(當然,這通過字符串函數的通用文本映射間接產生影響)?VS C++字符集編譯器設置是否影響字符編碼?

我不是很期待,但是由於文件說「告訴編譯器使用指定的字符集」,我想肯定的是,具體而言,它沒有任何影響關於如何將任何字符的非ASCII文本放入字符串或wstrings編碼? (我知道源中的非ASCII字面值不是便攜式的,但是在這種情況下使用這種解決方案的人很多。)

在此先感謝。

回答

3

不,它隻影響宏定義。這反過來可以對<tchar.h>或Windows T字符串指針類型(LPTSTR等)產生廣泛的影響。

如果您在字符串文字中使用任何非ASCII代碼,那麼您很大程度上依賴於編譯器解碼源代碼文件中文本的方式。它假定的默認編碼是您在控制面板+區域和語言選項中配置的系統代碼頁。當你的源代碼文件偏離你的機器太遠的時候,這將不會工作。用BOM指定utf8是明智的,所以這從來都不是問題。在使用另存爲設置的IDE中,在保存按鈕上的箭頭「使用編碼保存」,選擇65001.對舊版本的C++編譯器支持utf8編碼的源代碼文件很少見。

2

對於未經過處理的字符串,C++遵循C:它是ASCII。如果你用任何東西包裝他們,遊戲就會改變。

C++ 0x標準化Unicode字符串。特別是UTF。這是一項新功能。