目录
问题:运行bat脚本,中文乱码
原因:编码—解码规则不同
记事本创建txt文件时,默认用UTF-8编码规则,将汉字编成二进制码。将txt改成bat后亦然。
而cmd默认用GBK规则将二进码解码成汉字,编码-解码规则不同导致汉字乱码。
查看cmd代码规则的方式是,光标在窗口栏最上方右键>>属性>>选项>>当前代码页
方法一 :改脚本为GBK
记事本打开txt>>另存为>>编码选择ANSI
方法二 :仅本次以UFT-8运行脚本
cmd中运行 chcp 65001 命令,或将其写入bat脚本中
方法三 :改cmd加载预设
原理是为cmd预设一些参数,比如字体、颜色和编码规则,每次cmd运行时都会先加载这些参数。有两种方法,分别是更改LOCAL_MACHINE的cmd配置和CURRENT_USER的cmd配置。二者冲突时前者生效。据此推测cmd先加载CURRENT_USER的配置,后加载LOCAL_MACHINE的配置。
注意:通过快捷方式打开的cmd,此方法不生效。即通过bat脚本、Win+R、C盘目录C:\Windows\system32\cmd.exe打开的cmd时,此方法有效;对于开始菜单的搜索栏,如果搜到的是快捷方式,那么打开的cmd编码将仍是GBK。可通过右键打开文件位置查看是否为快捷方式。
推测快捷方式跳过了预设加载阶段。若希望快捷方式也有效,请参考文末参考连接1的方法3。
1.改local machine
window键+R 打开运行程序,输入regedit,运行注册表编辑器,打开如下文件夹
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
修改AutoRun文件,改为chcp 65001,若无此项则右键>>新建字符串值>>重命名为Autorun
2.改Current user
window键+R 打开运行程序,输入regedit,运行注册表编辑器,打开如下文件夹
计算机\HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe
修改CodePage文件,数值为65001,基数是十进制。若无此项则右键>>新建DWORD(32位)>>重命名为CodePage
方法四 :改Windos设置
让cmd和一些软件默认使用UTF-8编码,不用每次打开cmd加载预设。
因为更改了默认设置,可能导致原本不乱码的软件出现乱码,如影响使用请改回。
桌面左下角打开Windows设置页面>>时间和语言>>左边栏打开语言>>右边栏相关设置里打开管理语言设置
点击左上角的管理页面>>更改系统区域设置>>当前系统区域设置下拉到底,改成中文(简体)>>勾选使用UTF-8提供全球语言支持。
参考链接
Windows 解决cmd/dos窗口中文乱码问题_cmd中文乱码解决方法-CSDN博客