关于编译告警 C4819 的完整解决方案 - The file contains a character that cannot be represented in the current code page (number). Save the file in Unicode format to prevent data loss.
引言
今天迁移开发环境的时候遇到一个问题,同样的操作系统和 Visual Studio 版本,原始开发环境一切正常,但是迁移后 VS 出现了 C4819 告警,上网查了中文的一些博客,大部分涵盖几种解决方案:
- 修改工程文件或者源文件,禁用该告警
- 修改文件内容,避免使用非法字符
- 将文件重新以 Unicode 格式保存
这些方案都不适用于我的问题,我并不想修改这些产生告警的头文件,因为这并不是我负责的模块,同时也并一定就是源文件的问题。
问题调研
不得已还是搜索了微软的官方文档,找到关于 C4819 告警的定义如下:
Compiler Warning (level 1) C4819
The file contains a character that cannot be represented in the current code page (number). Save the file in Unicode format to prevent data loss.
出现 C4819 的原因
当编译 ANSI 源文件时,系统使用了无法显示所有字符的 codepage。
消除该告警的完整解决方案:
- 如果你不需要的话,可以移除非法字符,比如注释
- 使用 Unicode escape sequences 来创建只包含基本 ANSI 字符的文件
- 将文件重新以 Unicode 格式保存
- 在控制面板中设置 codepage 以支持源文件中非法的字符集
关于什么是 Unicode escape sequences 可以参考 https://dencode.com/en/string/unicode-escape
关于如何用 Unicode 格式保存文件可以参考原文,链接在文末。
问题解决
对于我不想修改源文件的情况,只能通过修改系统的 codepage 来解决,以英文操作系统为例,中文系统可以对照修改:
- 打开 Control Panel
- 选择 Region (and Language)
- 选择 Administrative 页签
- 在 Language for non-Unicode programs 区域点击 "Change System Locale" 按钮
- 设置 Current system locale,比如 English (United States)。
- 点击 "OK" 保存。
重新编译代码,确认问题已经解决。
引用
- https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4819?view=msvc-160
- https://knowledgebase.progress.com/articles/Article/4677
关于编译告警 C4819 的完整解决方案 - The file contains a character that cannot be represented in the current code page (number). Save the file in Unicode format to prevent data loss.的更多相关文章
- error C2220: warning treated as error - no 'object' file generated warning C4819: The file contains a character that cannot be represented in the current code page (936).
用Visual Studio2015 编译时,遇到如下编译错误: error C2220: warning treated as error - no 'object' file generated ...
- WebAPI2使用AutoFac依赖注入完整解决方案。
WebApi2上进行依赖注入,在百度里能搜到的的完整解决方案的文章少之又少,缺胳膊断腿. 和MVC5依赖注入的不同之处,并且需要注意的地方,标记在注释当中.上Global代码: namespace S ...
- C/S应用升级更新完整解决方案
年末福利,C/S应用升级更新完整解决方案放送 程序员,工作累寿命短,大家应该学会分享,别浪费有限的生命与健康做重复的事情. C/S方式实现的应用有个升级更新功能是必需的,以前整过一个但是没考虑多套C/ ...
- 利用JFreeChart绘制股票K线图完整解决方案
http://blog.sina.com.cn/s/blog_4ad042e50100q7d9.html 利用JFreeChart绘制股票K线图完整解决方案 (2011-04-30 13:27:17) ...
- g++编译后中文显示乱码解决方案(c++)
g++编译后中文显示乱码解决方案 环境:Windows 10 专业版 GCC版本:5.3.0 测试代码: 1 #include <iostream> 2 using namespace ...
- java ant 编译打包build.xml完整配置范例
java ant 编译打包build.xml完整配置范例 <?xml version="1.0" encoding="UTF-8" ?> <p ...
- XP局域网访问无权限、不能互相访问问题的完整解决方案
XP局域网访问无权限问题的完整解决方案: 1:用管理员账户登录系统 2:在“开始”-- “运行”里输入 GPEDIT.MSC 目的是打开组策略选项 3:依次展开”WINDOWS设置”-”本地策略”-” ...
- 国产芯片任重道远 国科微SSD主控芯片的“追赶之路”(不能只提供一颗芯片,而是要将芯片、国密算法、固件Firmware、BIOS和操作系统紧密联系在一起,变成完整解决方案交给行业用户,才能真正体现自身的价值)
集微网消息,“中国芯”战略之路道阻且长,踏入这个赛道的攻坚者们需要十年如一日的技术突破,需要集合产业势能,共同协作,方能建立中国核心技术真正的竞争力. 国产化之路任重道远,SSD芯片初见成效 信息时代 ...
- 注意由双大括号匿名类引起的serialVersionUID编译告警
问题描述 最近版本组织清理编译告警,其中有这么一条比较有意思,之前没见过,拿出来说一说 "serializable class anonymous com.demo.Main$1 has n ...
- 手动从0搭建ABP框架-ABP官方完整解决方案和手动搭建简化解决方案实践
本文主要讲解了如何把ABP官方的在线生成解决方案运行起来,并说明了解决方案中项目间的依赖关系.然后手动实践了如何从0搭建了一个简化的解决方案.ABP官方的在线生成解决方案源码下载参考[3],手动搭 ...
随机推荐
- [FAQ] 在 Mac 系统上 yarn add canvas 安装失败的原因
当使用 yarn add 安装某个 node 库时,如果出现失败,多半是由于 nodejs 版本问题引起的. 现在我们可以使用 nvm 方便的管理不同的 nodejs 进行随时切换. $ nvm ...
- [FAQ] panic: listen tcp :xxxx: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.
在 Go 中运行服务之前的绑定端口这一步,如果端口号被占用了,那么会提示它只能使用一次. 换个端口号或者检查端口号的占用程序. Link:https://www.cnblogs.com/farwish ...
- dotnet 推荐一个使用 Json 直接路由通讯的 IPC 库
本文将和大家推荐一个我所在团队开源的本机多进程通讯 IPC 库,此 IPC 支持使用 JSON 格式进行直接路由通讯,具有使用方便,稳定性高,性能好的优点 这是我所在的团队在 GitHub 上使用最友 ...
- 2018-12-26-WPF-开启-ScrollViewer-的触摸滚动
title author date CreateTime categories WPF 开启 ScrollViewer 的触摸滚动 lindexi 2018-12-26 14:24:26 +0800 ...
- 异构数据源同步之表结构同步 → 通过 jdbc 实现,没那么简单
开心一刻 今天坐沙发上看电视,旁边的老婆拿着手机贴了过来 老婆:老公,这次出门旅游,机票我准备买了哈 我:嗯 老婆:你.我.你爸妈.我爸妈,一共六张票 老婆:这上面还有意外保险,要不要买? 我:都特么 ...
- 前端scale负数表示翻转
https://blog.csdn.net/wang_yu_shun/article/details/121299208 极力推荐这个博主写的,前端有关负数的小技巧
- Stable Diffusion 术语表
Stable Diffusion 术语表 说明 原文地址:https://theally.notion.site/The-Definitive-Stable-Diffusion-Glossary-1d ...
- xFormers
xFormers可以加快图像生成速度(几乎快两倍)并使用更少的 GPU 内存.它被广泛使用并且工作得很好,但与您之前生成的图像相比,它有时会生成不同的图像(对于相同的提示+设置). 重要的!!xFor ...
- Typora导出html图片转base64
Typora 导出html图片转base64 Typora 中图片使用绝对路径 图片路径不要使用中文,否则可能会不成功 打包 jar ,jar放在到出 html 同级目录下 必须要有 jdk 环境 一 ...
- 开源项目 cloud-platform 的本地部署
F7 单步调试,进入函数内部 F8 单步调试,不进入函数内部 F9 继续执行,进入下一个断点或执行完程序 Shift+F7 选择要进入的函数 Shift+F8 跳出函数 Ctrl+F8 设置/取消当前 ...