解决Windows CMD中文乱码问题

说明:本文介绍解决Windows操作系统执行脚本乱码的问题,如下:

powershell 复制代码
set REPOSITORY_PATH=.\mvn_repo
rem 正在搜索...

del /s /q %REPOSITORY_PATH%\*.lastUpdated

rem 搜索完毕
pause

这是个bat脚本,可以删除指定路径下的,扩展名是 .lastUpdated的文件,可以注意到中文是乱码的。

原因

文件的字符集和系统的字符集不一致,windows系统的字符集,可以在CMD中敲chcp查看,如下:

936,是GB2312编码,是简体汉字的编码,但文件是UTF-8编码,所以执行的时候中文就乱码了。

解决

方法一

修改bat脚本,字符集为GB2312编码,与操作系统保持一致,如下:

修改后,文件内的所有中文汉字可能会乱码,因为原来是UTF-8编码,现在是转为GB2312编码,原来的汉字就对不上了,需要手动再在当前编码环境下再敲一遍。

方法二

在执行脚本前,修改CMD的编码,如下:

powershell 复制代码
chcp 65001

set REPOSITORY_PATH=.\mvn_repo
rem 正在搜索...

del /s /q %REPOSITORY_PATH%\*.lastUpdated

rem 搜索完毕
pause

chcp,后面不跟数字,是查看当前系统的字符集,跟指定的数字,表示修改字符集为对应数字的字符集。如上,chcp 65001,表示将字符集修改为UTF-8,这样下面执行的命令就是在UTF-8字符集环境下了。

另外

以上是在执行脚本的时候,另外,如果想要在打开CMD窗口执行命令,也是UTF-8字符集,可以在打开CMD命令后,先敲一行chcp 65001命令,转换字符集,再继续执行命令。

但这种修改是会话级的,就是关闭窗口后设置就失效了。如果是通过下面这种方式打开命令窗口的

可以找到文件位置,在执行参数里,加上/K chcp 65001

这样,通过这种方式打开命令窗口就是UTF-8字符集了。

如果是通过在运行中敲CMD进入命令行,上面这种设置就不行,需要去修改注册表。

话说回来,在命令窗口里执行命令没有必要是UTF-8编码,乱码问题是命令的编写环境和执行环境字符集不一致造成的,而在命令窗口中,你的编写环境和执行环境都是GB2312编码,所以不会存在乱码。(经典白学,苦笑)

总结

本文介绍了解决Windows CMD中文乱码问题两种方式,以及乱码问题的一些讨论

首次发布

hezhongying.blog.csdn.net/article/det...

相关推荐
小宇子2B3 天前
三、内核入口 el0_svc / entry_SYSCALL_64 的汇编做了什么——从异常向量到 C 函数
操作系统
小宇子2B4 天前
四、从 write(1, "hello", 5) 到 ksys_write() —— sys_call_table 怎么路由的
操作系统
小宇子2B4 天前
一、printf("hello") 怎么变成 write(1, "hello", 5) —— libc 的 stdout 缓冲机制
操作系统
小宇子2B9 天前
一个 pthread_mutex_lock() 到底锁了什么——从用户态 CAS 到内核调度
操作系统
小宇子2B10 天前
多线程 malloc 为什么会变慢——glibc 的 arena 到 bins 全景
操作系统
qq_3692243314 天前
Windows全系通用!ntdll.dll文件丢失、报错、闪退问题的完整排查与修复教程
windows·dll·dll修复·dll丢失·dll错误
阿米亚波14 天前
【Windows】QEMU 启动 openEuler aarch64/arm64 架构系统 + 离线软件源
linux·windows·经验分享·笔记·架构·arm
caimouse14 天前
Reactos 第 10 章 网络操作 — 10.3.1 NIC驱动
网络·windows
初圣魔门首席弟子14 天前
Node.js 详细介绍(知识库版)
windows·qt·node.js·知识库
CHENG-JustDoIt14 天前
AI工具 | 爆火开源项目Odysseus AI 工作台:从项目介绍、部署情况及其使用等多方位分析指南(含详细步骤)
大数据·人工智能·windows·python·ai·开源·github