解决win10执行批处理报编码错误
问题描述
永远要记得备份文件。系统不知道哪个时候就会突然崩溃。这不,正在疯狂编码中,我的win7系统就崩溃了,再也无法进入系统,于是乎重装了win10,准备一亲win10的芳泽。win10确实挺香,但是遇到各种各样的问题也是宿命。
我遇到的问题是,以前执行的好好的很多bat批处理文件都无法正常运行了。报错:No such file or direcotry。
首先,怀疑是cmd所在路径没有切换到当前目录的问题?在批处理中加了dir命令,排除了路径错误,确实是在当前目录下执行的。
其次,看到报错信息后面一堆文件路径中文乱码,直觉上感觉是中文文件名导致的问题。用notepad++打开批处理文件,确认编码是ANSI编码,并没有问题。那就是编码页的问题了。
在命令行输入chcp命令:
chcp
反馈的输出是65001,这是utf8编码啊,这不对啊。用chcp修改:
chcp 936
然后再次执行批处理文件:
./build.bat
哗哗哗,一切正常的执行过去了。看来就是编码页问题,但是大家知道,chcp只是修改了当前命令行环境,等下次执行的时候,将依旧面对65001的utf8编码,不能根本解决问题,而且我的批处理文件是git仓库里的多人协作使用的,可不能私自修改编码格式。
解决方法
后来终于找到,问题出在勾选了系统设置里的beta版:使用UnicodeUTF-8提供全球语言支持(U)
设置的具体位置如下,我们需要取消勾选:
一、设置中打开区域和语言页,点击‘管理语言设置’
二、点击管理tab页按钮,进行切换:
三、点击‘更改系统区域设置’按钮:
四、找到目标了,取消勾选。注意这个更改后需要立即重启系统生效。
重启生效后,我们输入chcp,就会发现默认都是936,代表GBK编码了。
备 注
chcp命令
英文全称:change code page。用途:显示或设置活动代码页编号
语法
nnn - 指定代码页的编号
chcp [nnn]
获取帮助信息
chcp /?
显示当前活动代码页的设置
chcp
设置活动代码页为936(Chinese)
chcp 936
代码页编码
部分代码页与国家/地区或语言的映射,更详细的可求助搜索引擎
代码页 国家/地区或语言
437 United States
850 Multilingual (Latin I)
852 Slavic (Latin II)
855 Cyrillic (Russian)
857 Turkish
860 Portuguese
861 Icelandic
863 Canadian-French
865 Nordic
866 Russian
869 Modern Greek
936 Chinese