VisualStudio 编译警告 C4819 warning

1.现象

编译C++代码,出现如下编译警告:

warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss

2.原因

在代码中存在汉字注释,并且源文件的编码方式不是UTF-16 LE

3.解决

  • 方法一:除掉所有汉字。编码注释统一使用英语(推荐,避免各种编码终极方法)。
  • 方法二:将文件的编码方式改为UTF-16 LE,而不是UTF-8(可能在跨平台中,出现编码问题)。
  • 方法三:在该文件的开始处加入警告禁止语句:#pragma warning (disable:4819)(不能跨平台)。

4.相关

  • 字符集Charset:是一个字符的集合。字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。一般由权威机构制定发布。常见字符集:ASCII字符集、GB2312字符集、BIG5字符集、GB18030字符集、Unicode字符集。

  • 字符编码(Character Encoding):计算机要准确的处理各种字符集文字,需要进行字符编码,以便计算机能够识别和存储各种文字。

  • 内码表CP(Code Page):代码页和字符集的含义基本相同,代码页规定了适用于特定地区的字符集合,和这些字符的编码。可以将代码页理解为字符和字节数据的映射表。OEM制定实现。

  • 常用CP与Charset对照表

CodePage Charset
CP936 GBK
CP20936 GB2312
CP65001 UTF-8
CP932 Shift-JIS

5.参考

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容