修复: 字符串文本被错误地解释 Visual C++ 编译器在 Visual Studio 2010 中时使用 utf-8 编码的字符串,并包含亚洲字符

这篇文章的 Microsoft Visual Studio 2008 版本,请参阅980263

症状

请考虑以下情况:

  • 在 Microsoft Visual Studio 2010 中创建 Visual C++ 项目。

  • 在项目中的文件初始化窄字符串常值。 这些字符串包含亚洲字符,并不能作为前缀以字母"l"。

  • 通过使用 utf-8 编码来保存该文件。

在这种情况下,当您编译项目时,字符串文本被错误地解释编译器。 此外,您会遇到下列问题之一:

  • 当文件包含字节顺序标记 (BOM) 时,编译操作成功。 但是,字符串文本仍能生成的应用程序中正确显示。 此外,可能会收到以下警告消息,当您编译项目:

    警告 C4566: 通用字符名称 xx 所表示的字符不能在当前代码页中表示。

  • 编译操作将失败。 此外,可能会在编译项目时收到以下错误消息:

    错误 C2078: 初始值设定项太多

  • 编译操作将失败。 此外,可能会收到以下警告消息,当您编译项目:

    警告 C4129: 字符: 无法识别的字符转义序列。

原因

发生此问题是因为编译器假定该文件中的文本可能被解释为 MBCS 编码而不为单字节 Unicode 的前导字节。这一问题,由于编译器错误翻译的文件。

解决方案

若要解决此问题,请将项目编译的计算机应用此修补程序。 然后,保存文件和字节顺序标记,然后在源文件中添加下面的"杂注"指令之前的字符串:

#pragma execution_character_set("utf-8")

回答 5: 适用于 Windows Server 2016 和 Windows 10 版本 1709 的 Windows Server 容器映像的更新包含针对这组漏洞的缓解措施,不需要进行额外的配置。 此"杂注"指令设置源文件的翻译单位,直到此"杂注"指令替换为另一种"杂注"指令。

有关此修补程序的详细信息

修补程序信息

受支持的修补程序现已从 Microsoft 推出。 但是,它被用于纠正本文中描述的问题。 它仅应用于正经历此特定问题的系统。 此修补程序可能会接受进一步的测试。 因此,如果这个问题没有对您造成严重的影响,我们建议您等待包含此修复程序的下一个。要立即解决此问题,请联系 Microsoft 客户支持服务,以获取此修复程序。 有关 Microsoft 客户支持服务的电话号码和有关支持费用的信息的完整列表,请访问下面的 Microsoft 网站:

http://support.microsoft.com/contactus/?ws=support回答 5: 适用于 Windows Server 2016 和 Windows 10 版本 1709 的 Windows Server 容器映像的更新包含针对这组漏洞的缓解措施,不需要进行额外的配置。 在特殊情况下,如果 Microsoft 支持专业人员确定某个特定的更新能够解决您的问题,可能取消的通常情况下收取的电话支持服务费用。 照常收取支持费用将应用于其他支持问题和对于特定更新无法解决的问题。

先决条件

您必须具有要应用此修补程序的安装 Microsoft Visual Studio 2010。

重启信息

应用此修补程序后,不需要重新启动计算机。

文件信息

此修补程序的英文版具有下表中列出的文件属性(或较新的文件属性)。 这些文件的日期和时间按协调世界时 (UTC) 列出。 在查看文件信息时,文件时间将转换为本地时间。 要了解 UTC 与本地时间之间的时差,请使用“控制面板”中“日期和时间”项中的“时区”选项卡。

文件名

文件版本

文件大小

日期

时间

平台

C1.dll

16.0.30319.351

658,240

23-Aug-2010

06:45

x86

C1.dll

16.0.30319.351

723,776

23-Aug-2010

06:45

x86

C1.dll

16.0.30319.351

899,400

23-Aug-2010

06:45

x86

C1xx.dll

16.0.30319.351

2,286,920

23-Aug-2010

06:45

x86

C1xx.dll

16.0.30319.351

2,428,232

23-Aug-2010

06:45

x86

C1xx.dll

16.0.30319.351

2,659,664

23-Aug-2010

06:45

x86

Clui.dll

16.0.30319.351

201,032

23-Aug-2010

06:45

x86

Clui.dll

16.0.30319.351

202,568

23-Aug-2010

06:45

x86

Clui.dll

16.0.30319.351

219,976

23-Aug-2010

06:45

x86

Clui.dll

16.0.30319.351

221,000

23-Aug-2010

06:45

x86

Clui.dll

16.0.30319.351

290,632

23-Aug-2010

06:45

x86

Clui.dll

16.0.30319.351

291,656

23-Aug-2010

06:45

x86

Clui.dll

16.0.30319.351

292,680

23-Aug-2010

06:45

x86

Clui.dll

16.0.30319.351

293,704

23-Aug-2010

06:45

x86

Clui.dll

16.0.30319.351

408,392

23-Aug-2010

06:45

x86

Clui.dll

16.0.30319.351

408,904

23-Aug-2010

06:45

x86

Clui.dll

16.0.30319.351

450,376

23-Aug-2010

06:45

x86

Clui.dll

16.0.30319.351

460,104

23-Aug-2010

06:45

x86

Clui.dll

16.0.30319.351

460,616

23-Aug-2010

06:45

x86

Clui.dll

16.0.30319.351

478,024

23-Aug-2010

06:45

x86

Clui.dll

16.0.30319.351

478,536

23-Aug-2010

06:45

x86

Clui.dll

16.0.30319.351

483,656

23-Aug-2010

06:45

x86

Clui.dll

16.0.30319.351

484,168

23-Aug-2010

06:45

x86

Clui.dll

16.0.30319.351

486,728

23-Aug-2010

06:45

x86

Clui.dll

16.0.30319.351

487,240

23-Aug-2010

06:45

x86

Clui.dll

16.0.30319.351

491,848

23-Aug-2010

06:45

x86

Clui.dll

16.0.30319.351

492,360

23-Aug-2010

06:45

x86

状态

Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。

需要更多帮助?

扩展你的技能
了解培训
抢先获得新功能
加入 Microsoft 内部人员

此信息是否有帮助?

谢谢您的反馈意见!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×