解决“warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失”的问题

拥有回忆 提交于 2020-02-27 00:37:47

最近在编译dart-sdk里的boringssl时遇到以下错误
warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
之前是靠把所有几十个源文件全部手动从ansi改为Unicode的撒币方法,虽然有效,但是太麻烦,还破坏了git代码版本,非常糟糕

几分钟前百度搜索“修改 cl.exe 默认使用utf8”时,垃圾百度显示的都是毫无关系的东西,简直令人想拿刀把李彦宏扌甬死,不过他也算干了件好事,如果没有把杂七杂八的没啥关系的搜索结果列出来,特别是把百度经验“win10 设置系统默认编码为utf-8”这个自家东西排到第一名位置,我也就想不到试试这个方法了。

经过试验,把win10 设置系统默认编码为utf-8之后,就不报错了。真是皆大欢喜。

随便推测了下,VS的这个编译器可能应该或许是从系统设置里获取了默认的编码,系统原来是gbk(CP936),改成utf8后,编译器就自动从936改成utf8的方式来默认处理代码了。

鉴于百度谷歌上都搜不到我这方法(至少两三页内没看到),我便在这里分享给大家,希望能帮大家解决问题。

又去看了下,该百度经验提示:

win10系统支持默认编码修改.。

  • 好处:
  1. 解决由utf8引起的cmd,powershell等乱码问题
  2. Visual Studio 2017(其他版本没试过) 新建文件则默认为utf8
  3. 其他
  • 可能的坏处:
  1. 上古版本的第三方应用软件可能会出现乱码。
  2. 由于此设置,微软官方特别说明为【beta版】(截至时间2020年1月19日),可能会引起其他未知问题,请充分考虑后再决定是否设置。

我再多测测,如果有其他问题,我会在这里记录。

软件环境:
win10 专业版,版本号1909,操作系统版本 18363.592
VS2019 社区版

在 "win10 设置系统默认编码为utf-8"后

  • cmder中文显示异常,中文会显示为重复显示。比如(“中文测试”会显示为“中中文文测测试试”),必须修改cmd.exe为“使用旧版控制台”,(应该是新版cmd里的一个API有问题)
  • Visual Studio里的终端输出有中文乱码,暂时没找到完全解决的方法

所以我把文章标题里“完美解决……”里的“完美”删了,在相关一系列软件能完美解决UTF8中文乱码问题前,修改系统默认编码为UTF-8不太可取。 推荐大家在编译完出问题的代码之后,还是把系统默认编码改回去,省心省力

后记
最后还是选择加了个/utf-8的编译选项,每次改系统编码太麻烦了

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!