Win10中新编写的批处理运行中文乱码问题解析

摘要:
在Windows 10之前,当我们编写批处理时,基本上都是开箱即用。回声显示中文没有问题。但如下图所示,当我们创建一个新的文本文档并编写这样的批处理代码时,运行时显示的中文代码是乱码。在Windows 10之前,没有这样的问题。是什么导致了这个问题。既然知道了原理,我们只需要确保cmd/powershell和文本文件的编码是相同的。有两种方法:保存为文本文件,并选择ansi作为编码;另一个是将cmd/powershell代码更改为utf-8。utf-8的活动代码页是65001。执行以下命令,然后重试

  在Windows10以前,我们编写批处理的时候,基本上是现写现用,echo显示中文完全没问题,但如下图,新建一个文本文档写这么一段批处理代码,运行的时候显示的中文就是乱码, Win10之前完全没有这个问题,是什么导致的这个问题呢。

Win10中新编写的批处理运行中文乱码问题解析第1张

  有一点非常重要,当出现乱码的时候,第一时间应该想到编码错误的问题,现在Unicode普及早已是大势所趋,Linux一直采用的是utf-8编码,微软一直坚持的ansi也开始动摇了,但从长期的习惯上来说,一次改成utf-8代价高,体验度可能也差,因此微软逐步开始将Windows的部分功能改成utf-8,逐渐的完全从ansi过渡到utf-8.
    因此在这个问题上,cmd和powershell的编码仍然是ansi,但新建的文本文档已经从之前默认的ansi变成了utf-8,从上图的右下角你可以看出来,文件是utf-8,用ansi去解码,必将导致非ASCII码显示成乱码。
    那么问题该怎么解决呢?既然知道了原理,我们只需要保证cmd/powershell和文本文件的编码相同即可,办法有2种,另存为文本文件,选择编码为ansi;另一种是把cmd/powershell编码改成utf-8,utf-8的活动代码页是65001,执行下列命令,我们再试
Win10中新编写的批处理运行中文乱码问题解析第2张

免责声明:文章转载自《Win10中新编写的批处理运行中文乱码问题解析》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇11 使用Tensorboard显示图片JDK下载安装配置教程(详细)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

windows批处理学习---01

一、 标记符号: 1 CR(0D) 命令行结束符 2 Escape(1B) ANSI转义字符引导符 3 Space(20) 常用的参数界定符 4 Tab(09) ; = 不常用的参数界定符 5 + COPY命令文件连接符 6 * ? 文件通配符 7 "" 字符串界定符 8 | 命令管道符 9 < > >> 文件重定...

Windows下批处理文件(.bat)的使用

cmd文件和bat文件的区别:在本质上两者没有区别,都是简单的文本编码方式,都可以用记事本创建、编辑和查看。两者所用的命令行代码也是共用的,只是cmd文件中允许使用的命令要比bat文件多。cmd文件只有在windows2000以上的系统中才能运行,而bat文件则没有这个限制。从它们的文件描述中也可以看出以上的区别:cmd文件的描述是“windows nt命...

Postgresql数据库的一些字符串操作函数(转)

今天做项目遇到客户反映了一个麻烦的事情,有一些数据存在,但就是在程序中搜索不出来,后来分析,发现问题为数据前面有几个空白字符,后来用SQL 查询了一下,发现八九个数据表中,数千万条数据中有将近三百万条数据存在相同的问题,本想着在查询时添加匹配符'%',后来试运行了一下,发现不可行,因 为尚有很多其它页面存在类似的搜索问题,并且这样会极大地影响到查询的速度,...

双系统——在win10系统保存和查看Ubuntu系统中的文件——Linux Reader

我的电脑是双系统,在win10系统下安装了Ubuntu16.04, 之后我的Ubuntu系统发生故障进不去,然后里面有重要的文件想查看和保存,我自己主要通过linux Reader这个软件实现的, linux Reader的下载链接:https://www.diskinternals.com/linux-reader/ 官方下载速度超级慢,我同时也将安装包...

SqlServer动态执行SQL语句sp_executesql、Exec

sp_executesql语法 sp_executesql[@stmt=]stmt[{,[@params=]N'@parameter_name data_type[,...n]'}{,[@param1=]'value1'[,...n] }] 参数 [@stmt=]stmt 包含 Transact-SQL 语句或批处理的 Unicode 字符串,stmt必...

MySQL 字符集与比较规则

参考:《MySQL是怎样运行的》,小孩子 字符集 # 查看字符集 show (character set|charset) [like 匹配的模式]; # utf8(utf8mb3) 与 utf8mb4 有什么不同? utf8(utf8mb3):用 1-3 字节表示一个字符 utf8mb4:用 1-4 字节表示一个字符,支持 emoji 表情哦...