最近在编译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系统支持默认编码修改.。
- 好处:
- 解决由utf8引起的cmd,powershell等乱码问题
- Visual Studio 2017(其他版本没试过) 新建文件则默认为utf8
- 其他
- 可能的坏处:
- 上古版本的第三方应用软件可能会出现乱码。
- 由于此设置,微软官方特别说明为【beta版】(截至时间2020年1月19日),可能会引起其他未知问题,请充分考虑后再决定是否设置。
我再多测测,如果有其他问题,我会在这里记录。
软件环境:
win10 专业版,版本号1909,操作系统版本 18363.592
VS2019 社区版
在 "win10 设置系统默认编码为utf-8"后
- cmder中文显示异常,中文会显示为重复显示。比如(“中文测试”会显示为“中中文文测测试试”),必须修改cmd.exe为“使用旧版控制台”,(应该是新版cmd里的一个API有问题)
- Visual Studio里的终端输出有中文乱码,暂时没找到完全解决的方法
所以我把文章标题里“完美解决……”里的“完美”删了,在相关一系列软件能完美解决UTF8中文乱码问题前,修改系统默认编码为UTF-8不太可取。 推荐大家在编译完出问题的代码之后,还是把系统默认编码改回去,省心省力
后记
最后还是选择加了个/utf-8
的编译选项,每次改系统编码太麻烦了
来源:oschina
链接:https://my.oschina.net/krysl/blog/3160083