我对visual studio中的“字符集”选项有疑问。
字符集
- 未设置
- 使用Unicode字符集
- 使用多字节字符集
我想知道“字符集”中三个选项之间的区别 此外,如果我选择其中的某些内容,则会影响对英语以外语言的支持。 (比如RTL语言)。
答案 0 :(得分:26)
这是一种兼容性设置,适用于为未启用Unicode的旧版Windows编写的旧代码。 Windows 9x系列中的版本,Windows ME是最后一个被广泛忽略的版本。选择“未设置”或“使用多字节字符集”时,将字符串作为参数的所有Windows API函数都重新定义为将char*
字符串转换为wchar_t*
字符串的小兼容性帮助函数,API的本机字符串类型。
此类代码严格依赖于默认的系统代码页设置。代码页将8位字符映射到Unicode,选择字体字形。当运行代码的机器具有正确的代码页时,您的程序将只生成正确的文本。如果代码页不匹配,则值>&128的字符将被呈现错误。
始终为现代代码选择“使用Unicode字符集”。特别是当您想要支持从右到左布局的语言并且您没有在开发机器上选择阿拉伯语或希伯来语代码页时。在代码中使用std::wstring
或wchar_t[]
。获取实际的RTL布局需要打开WS_EX_RTLREADING
调用中的CreateWindowEx()
样式标志。
答案 1 :(得分:11)
汉斯已经回答了这个问题,但我发现这些设置都有好奇的名字。 (究竟什么没有设置,为什么其他两个选项听起来如此相似?)关于这一点:
Difference between MBCS and UTF-8 on Windows更详细地介绍了这些问题。