我的問題關於visual studio 2010中的「字符集」選項。關於visual studio 2010中的「字符集」選項
字符集
- 沒有設置
- 使用Unicode字符集
- 使用多字節字符集
我想知道在「字符集」三個選項之間的差異。
而且,如果我選擇了它們,會影響對英語以外的語言的支持。 (如RTL語言)。
我的問題關於visual studio 2010中的「字符集」選項。關於visual studio 2010中的「字符集」選項
字符集
- 沒有設置
- 使用Unicode字符集
- 使用多字節字符集
我想知道在「字符集」三個選項之間的差異。
而且,如果我選擇了它們,會影響對英語以外的語言的支持。 (如RTL語言)。
這是一個兼容性設置,用於舊版代碼,該代碼是爲未啓用Unicode的舊版Windows編寫的。 Windows 9x系列中的版本,Windows ME是最後一個被廣泛忽視的版本。選擇「未設置」或「使用多字節字符集」後,所有將字符串作爲參數的Windows API函數都會重新定義爲一個小的兼容性輔助函數,該函數將char*
字符串轉換爲wchar_t*
字符串,即API的本機字符串類型。
此類代碼嚴重依賴於默認系統代碼頁面設置。代碼頁將8位字符映射爲用於選擇字體字形的Unicode。運行代碼的機器具有正確的代碼頁時,您的程序只會生成正確的文本。如果代碼頁不匹配,那麼其值> = 128的字符將呈現錯誤。
總是選擇「使用Unicode字符集」爲現代代碼。特別是當您想要支持從右至左佈局的語言,並且您的開發機器上沒有選擇阿拉伯語或希伯來語代碼頁時。在代碼中使用std::wstring
或wchar_t[]
。獲取實際的RTL佈局需要打開CreateWindowEx()
調用中的WS_EX_RTLREADING
樣式標誌。
漢斯已經回答了這個問題,但我發現這些設置有好奇的名字。 (究竟是不是被設置,以及爲什麼其他兩個選項聽起來如此相似?)關於指出:
Difference between MBCS and UTF-8 on Windows進入中有更詳細的這些問題。
太糟糕了微軟拒絕添加對UTF-8的支持 – MarcusJ 2017-12-10 21:57:24