Share via


execution_character_set pragma

指定用于字符串和字符文本的执行字符集。 用 u8 前缀标记的文本不需要此指令。

语法

#pragma execution_character_set(target)

参数

target
指定目标执行字符集。 目前唯一支持的目标执行集是 "utf-8"

备注

此编译器指令在 Visual Studio 2015 Update 2 及更高版本中已过时。 建议将 /execution-charset:utf-8/utf-8 编译器选项与包含扩展字符的窄字符和字符串文本的 u8 前缀一起使用。 有关 u8 前缀的详细信息,请参阅字符串和字符文本。 有关编译器选项的详细信息,请参阅 /execution-charset(设置执行字符集)/utf-8(将源和执行字符集设置为 UTF-8)

#pragma execution_character_set("utf-8") 指令指示编译器将源代码中的窄字符和窄字符串文本编码为可执行文件中的 UTF-8。 此输出编码与源文件的编码方式无关。

默认情况下,当编译器对窄字符和窄字符串进行编码时,它将当前代码页用作执行字符集。 当前代码页范围之外的 Unicode 或 DBCS 字符将转换为输出中的默认替换字符。 Unicode 和 DBCS 字符被截断为其低序字节,这几乎是你不想看到的。 若要为源文件中的文本指定 UTF-8 编码,请使用 u8 前缀。 编译器将这些 UTF-8 编码的字符串传递给未更改的输出。 带 u8 前缀的窄字符文本必须适合字节,或者在输出时截断它们。

默认情况下,Visual Studio 使用当前代码页作为用于解释源代码的输出的源字符集。 读取文件时,Visual Studio 会根据当前代码页解释该文件,除非文件设置了代码页。 或者,除非在文件的开头检测到字节顺序标记 (BOM) 或 UTF-16 字符。 无法在某些版本的 Windows 中将 UTF-8 设置为当前代码页。 当自动检测发现这些版本中没有 BOM 的 UTF-8 编码源文件时,Visual Studio 假定它们在当前代码页中编码。 源文件中指定或自动检测到的代码页之外的字符可能会导致编译器警告和错误。

另请参阅

Pragma 指令以及 __pragma_Pragma 关键字
/execution-charset(设置执行字符集)
/utf-8(将源和执行字符集设置为 UTF-8)