问题描述
在不使用Unicode char*
等任何符号的情况下创建字符串变量(u8
)时,例如:
const char *str = "Hello 日本語 سلام Ä भारतीय ไทย";
如何指定默认编码以在流行平台上读取该变量或取决于什么?
解决方法
在不使用Unicode符号的情况下,与字符串变量一起使用的默认编码是什么?
在这里要考虑两种编码。一种是源文件的编码。这是您用来写入文件的编码。为了使这种解释正确,编译器必须使用与编写文件时相同的编码来解释源。
另一种编码是执行编码。这是字符串和字符文字将具有的编码。通常与源编码相同,但是如果不相同,则文字将转换为执行编码。
两种编码都是实现定义的。
如何指定默认编码以在流行平台中读取该变量或取决于什么?
这取决于您使用的编译器。
例如,这就是海湾合作委员会的文件所说的:
-fexec-charset=charset
设置执行字符集,用于字符串和字符常量。默认值为UTF-8。字符集可以是任何编码 系统的“ iconv”库例程支持。
-finput-charset=charset
设置输入字符集,用于将输入文件的字符集转换为 海湾合作委员会。如果未指定语言环境,或者GCC无法获取此信息 来自区域设置的信息,默认为UTF-8。这可以是 由语言环境或此命令行选项覆盖。目前 如果发生冲突,则命令行选项优先。 charset可以是系统的“ iconv”库支持的任何编码 常规。