对于VS C ++编译器设置, Unicode , MBCS 和未设置之间是否有任何直接后果配置属性 - > General->字符集,除了_ UNICODE ,_ MBCS 和_ T 宏的设置(当然,这通过字符串函数的通用文本映射间接产生了影响)?
我不期待它,但是因为文档说“告诉编译器使用指定的字符集”,我想确定,具体来说,它没有任何影响如何编码放入字符串或字符串的文字非ASCII文本? (我知道源中的非ASCII文字不是可移植的,但我在维护一个大量使用它的解决方案。)
提前致谢。
答案 0 :(得分:3)
不,它只影响宏定义。这反过来可以对来自<tchar.h>
或Windows T字符串指针类型(LPTSTR等)的任何内容产生广泛的影响。
如果在字符串文字中使用任何非ASCII代码,那么您在很大程度上依赖于编译器对源代码文件中的文本进行解码的方式。它假定的默认编码是您在控制面板+区域和语言选项中配置的系统代码页。当您的源代码文件离您的机器太远时,这将无法正常工作。使用BOM指定utf8是明智的,所以这绝不是问题。在使用“另存为”设置的IDE中,“保存”按钮上的箭头“使用编码保存”,选择65001.对于早期版本的C ++编译器,对utf8编码的源代码文件的支持是不确定的。
答案 1 :(得分:2)
对于未加修饰的字符串,C ++遵循C:它是ASCII。如果用任何东西包裹它们,游戏就会改变。
C ++ 0x标准化Unicode字符串。特别是UTF。这是一个新功能。