解决bat批处理输出乱码的问题

乱码原因

Windows的cmd.exe默认编码格式为ANSI
简体中文版的Windows, 其ANSI对应微软Codepage为cp936
大致等同于GBK编码

如果你的bat文件是UTF-8编码的, 或者是是其他Codepage下创建的, 比如
Windows日语版下创建的bat文件, 保存为ANSI编码时对应cp932, 即Shift-JIS编码
Windows繁体中文版下创建的bat文件, 保存为ANSI编码时对应cp950, 即Big5编码

当bat文件编码与当前cmd环境不一致时, 双击执行时就会乱码

解决方法

方法1

将bat文件转换成你当前操作系统的编码
比如将UTF-8格式bat文件, 右键编辑, 然后选文件另存, 指定为ANSI编码, 保存

然后再执行就正常了

方法2

假如你的bat文档是日文格式的或其他格式, 首先需要将bat文件的编码转换到UTF-8格式

会python的话可以参考我的另一篇博客
《记录一些最近用过的编码转换》
https://blog.csdn.net/watfe/article/details/65935342
复制出一些字符串或者是字节集, 跑码识别一下看是什么的编码的

然后用文本工具或是python代码实现转换

def decoding(path,fromcode,tocode):
	# 以bytes形式读取bat内容
    with open(path,'rb') as f:
        b = f.read()
        print(b)
    # 解码另存为'temp.bat'
    with open('temp.bat', 'w', encoding=tocode) as f:
        s = b.decode(fromcode,errors='ignore')
        f.write(s)

decoding('dir.bat','gbk','utf-8')

得到UTF-8格式的bat文件

接下来需要将你的cmd也调整到utf-8
将以下内容保存为cmd_UTF-8.reg然后运行

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe]
"CodePage"=dword:0000fde9

此时cmd环境也就变成了UTF-8的

然后此时再执行bat文件就不会乱码了

至于后续将cmd恢复回默认也很简单
将以下内容保存为cmd_ANSI.reg然后运行即可

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe]
"CodePage"=-

到此这篇关于解决bat批处理输出乱码的问题的文章就介绍到这了,更多相关bat批处理输出乱码内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • bat命令批处理判断32位还是64位系统的多种方法

    第一种代码:通过 %PROCESSOR_ARCHITECTURE% 可以通过cmd中 通过echo %PROCESSOR_ARCHITECTURE% if "%PROCESSOR_ARCHITECTURE%"=="x86" goto x86 if "%PROCESSOR_ARCHITECTURE%"=="AMD64" goto x64 exit :x64 explorer.exe http://www.baidu.com/ e

  • 解决springmvc+mybatis+mysql中文乱码问题

    近日使用ajax请求springmvc后台查询mysql数据库,页面显示中文出现乱码 最初在mybatis配置如下 <select id="queryContentById" resultType = "java.lang.String" parameterType="String" > select text from News where id=#{o} </select> 其中表News的text字段为blob类型

  • bat文件加密 bat解密脚本(让bat乱码现形)

    bat加密脚本(保存为.BAT文件) @echo off cls color 2a :start cls echo ******************************************************************************* echo * * echo * BAT 加 密 最 终 版 * echo * * echo ******************************************************************

  • 利用bat批处理程序通过DOS命令行删除所有的空文件夹的方法

    用过gothub或者码云的同学都知道,不包含任何文件的空文件夹上传提交时不被允许的.当然你可以在空文件下创建.keep文件(或.gitkeep文件),然后就可以上传了. 但是如果空文件夹比较多,并且我们确实不需要这些空文件了,那本文就学习一种命令行删除所有空文件夹的方法.并封装成.bat批处理程序.通过鼠标右键运行即可. 一,DOS删除命令 1.1,删除文件命令 del 若是想删除文件,输入del 盘符名:\文件名,比如,我想删除一个在F盘的名为123.txt的文件,则输入  del f:\12

  • 让bat批处理以管理员权限运行的实现方法

    1.第一种方法 有的电脑是非管理员登录,运行程序时,需要提示是否运行运行.解决方法如下: @ echo off %1 %2 ver|find "5.">nul&&goto :Admin mshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :Admin","","runas&quo

  • BAT 批处理脚本教程(详细篇脚本之家补充)

    第一章 批处理基础 第一节 常用批处理内部命令简介 批处理定义:顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD.这些命令统称批处理命令. 小知识:可以在键盘上按下Ctrl+C组合键来强行终止一个批处理的执行过程. 了解了大概意思后,我们正式开始学习.先看一个简单的例子! @echo off echo "欢迎来到我们!" pause 把上面的3条命令保存为文件test.bat或者test.cmd然后执行, 他就会在屏幕上显示以下二行话

  • Windows下使用批处理文件.bat删除旧文件

    本文教大家写一个批处理文件.bat删除旧文件,供大家参考,具体内容如下 1. 批处理文件 del_old_file.bat rem 删除D:\temp目录下7天前的文件 Forfiles /p D:\temp /s /d -7 /m *.* /c "cmd /c del /q /f @path" rem 删除C:\inetpub\logs目录下14天前的文件 Forfiles /p C:\inetpub\logs /s /d -14 /m *.* /c "cmd /c del

  • 解决bat批处理输出乱码的问题

    乱码原因 Windows的cmd.exe默认编码格式为ANSI 简体中文版的Windows, 其ANSI对应微软Codepage为cp936 大致等同于GBK编码 如果你的bat文件是UTF-8编码的, 或者是是其他Codepage下创建的, 比如 Windows日语版下创建的bat文件, 保存为ANSI编码时对应cp932, 即Shift-JIS编码 Windows繁体中文版下创建的bat文件, 保存为ANSI编码时对应cp950, 即Big5编码 当bat文件编码与当前cmd环境不一致时,

  • 解决PyCharm控制台输出乱码的问题

    最近公司新换了台电脑,各种开发环境要重新配置,想想Paas确实还是有市场的,如果有了,这种情况可以省下不少气力.吐槽一下,言归正传 装完python后,继续装好PyCharm.把之前的程序导进来试运行下安装是否成功,发现控制台里的显示结果有乱码.乱码部分是一个目录的输出,这个目录里含有中文路径 网上搜了下,有人说把下面图中的两个Encoding设置为UTF-8会解决这个问题.这么配置了下,发现不起作用,即使我代码里本身已经用了UTF-8编码了. 又过了两天,期间有时间就换着关键词百度,终于发现了

  • bat批处理脚本中文乱码的解决

    目录 问题描述 问题分析 问题解决 1.转换脚本文件的编码方式 2.更改代码页 问题描述 bat 批处理脚本如下 @echo off echo hello,world. echo 你好,中国 pause 在 CMD 执行该脚本时,出现了中文乱码 问题分析 乱码都跟字符编码有关系. 计算机只能处理数字,如果遇到文本,必须先将其转换为数字后才能处理,由此出现了字符编码(字符集).如果编码时采用某种字符编码,那么解码时,必须得相对应使用同一种字符编码,如采用不同的字符编码,会出现乱码. 问题解决 1.

  • iOS中Xcode 8 日志输出乱码问题的解决方法

    更新到Xcode 8的同学应该都遇到了这个问题:用Xcode 8运行项目,日志会疯狂的刷,就像下面这种图一样: 日志输出 于是,简单搜寻了下,"歪果仁"给出了如下解决方法: Edit Scheme-> Run -> Arguments, 在Environment Variables里边添加 OS_ACTIVITY_MODE = disable 以上所述是小编给大家介绍的iOS中Xcode 8 日志输出乱码问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复

  • 解决MySQL客户端输出窗口显示中文乱码问题的办法

    最近发现,在MySQL的dos客户端输出窗口中查询表中的数据时,表中的中文数据都显示成乱码,如下图所示: 上网查了一下原因:之所以会显示乱码,就是因为MySQL客户端输出窗口显示中文时使用的字符编码不对造成的,可以使用如下的命令查看输出窗口使用的字符编码:show variables like 'char%'; 命令执行完成之后显示结果如下所示: 可以看到,现在是使用utf8字符编码来显示中文数据的,但是因为操作系统是中文操作系统,默认使用的字符集是GB2312,所以需要把输出窗口使用的字符编码

  • Spring Boot2解决idea console 控制台输出乱码的问题

    idea console控制台输出乱码 Idea默认配置是采用GBK, 而项目工程文件采用的是UTF-8. 编码不一致,导致idea Console控制台输出乱码. 网上的解决方案,大都是直接修改Settings=>Editor=>File Encodings下面的配置,如下图: 将Global Encoding,也就是全局配置编码格式,跟Project Encoding 项目编码格式 配置成一样的就OK了. 全局配置有时候会与项目的编码格式不一样,所以尽量不要动. 但是修改Project E

  • bat脚本输出日志的方法

    一,bat脚本常用的的输出命令是"echo 输出内容",可以利用echo将文本输出到cmd窗口或文件.bat脚本是不区分大小写的脚本语言,因此大小写都可以. 例如: REM 在命令行窗口输出 echo Hello World! pause 则会在命令行窗口输出Hello World! 通过bat打开命令行窗口运行上面的命令还会输出CMD运行相关的提示信息.如果想关闭多余的输出可以用 @ECHO OFF,示例: @ECHO OFF REM 在命令行窗口纯净的输出 echo Hello W

  • 解决python Markdown模块乱码的问题

    有个需求需要把markdown转成html模块,查询了一下刚好有这个模块 安装 pip install amrkdown 安装完成直接转换并保存为html时,发现出现中文乱码的情况 用编辑器打开发现是缺少utf8编码 所以只需要在头增加一行<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 即可 查询Markdown包安装地址 pip install markdown

  • BAT批处理判断服务是否正常运行的方法(批处理命令综合应用)

    先给大家普及下批处理的基本概念 批处理(Batch),也称为批处理脚本.顾名思义,批处理就是对某对象进行批量的处理,通常被认为是一种简化的脚本语言,它应用于DOS和Windows系统中.批处理文件的扩展名为bat 或cmd.目前比较常见的批处理包含两类:DOS批处理和PS批处理.PS批处理是基于强大的图片编辑软件Photoshop的,用来批量处理图片的脚本:而DOS批处理则是基于DOS命令的,用来自动地批量地执行DOS命令以实现特定操作的脚本.更复杂的情况,需要使用if.for.goto等命令控

  • 永久解决VSCode终端中文乱码问题

    在Windows下使用VSCode编译运行,都出现中文乱码的问题,今天我就遇见了这种情况,上网搜了半天也没有找到正确的解决方法,现将我把我的方法晒一下. 中文的windows下的cmd默认使用GBK的编码, 每次需要的时候只要在VSCode终端输入命令:chcp 65001, 切换代码页到使用UTF-8就可以解决中文代码的问题,只不过这种方法太麻烦了,每次进入终端都要输入命令,那有没有永久性解决的呢?当然有了. 永久性地修改为VSCode的控制台代码页为65001: 在VSCode中通过打开"文

随机推荐