bat批处理运行时乱码的解决方法

问题现象

bat文件中包含中文,保存的编码格式UTF-8,此时运行该bat文件会出现乱码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
@echo off
echo ------------------开始---------------------
for /f   %%i in (test.txt)  do (
SetLocal EnableDelayedExpansion
echo %%i
set str=%%i
Set str=!Str:Helloo=hello!
  echo !str!>>1.txt
  EndLocal
)
echo ------------------结束---------------------
echo. & pause

解决方法

  1. 改变编码格式为ANSI
  2. 在原先 bat 脚本文件中声明更改代码页 chcp 65001
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
chcp 65001
@echo off
echo ------------------开始---------------------
for /f   %%i in (test.txt)  do (
SetLocal EnableDelayedExpansion
echo %%i
set str=%%i
Set str=!Str:Helloo=hello!
  echo !str!>>1.txt
  EndLocal
)
echo ------------------结束---------------------
echo. & pause

拓展

代码页 映射的字符集
936 GB2312
20127 US-ASCII
65001 UTF-8