在Windows中,一些命令(如WMIC)输出到文件以后,默认是UTF编码。

如图:

 但是有些软件并不支持这种编码(如易语言),中文等双字节文字就会变成乱码,这个时候我们就需要进行编码转换。

方法一,使用find命令

例:

wmic process | find /v "" > Z:\2.txt

执行后,文件编码已经变成了ANSI:

方法二,使用type命令转换已有文件

例:

type Z:\1.txt > Z:\3.txt

这样,新的3.txt就是ANSI编码了:

 方法三,使用Powershell,进行多编码转换

PowerShell是比CMD更强大的命令行工具。。

在运行中输入PowerShell回车,或者在较新的Windows版本中,点击右键选择“在终端中打开”:

打开之后如图: 指定输出编码示例:

wmic process | Out-File -Encoding "Default" Z:\4.txt  #输出为ANSI编码

type命令同样可以使用:

type Z:\1.txt | Out-File -Encoding "Default" Z:\5.txt

 和CMD不同的是,PowerShell本身提供了输出到文件(Out-File),并指定编码(-Encoding)的功能!它不仅可以把UTF编码的文件转换为ANSI编码,也可以将ANSI编码的文件转换为UTF编码!

ANSI转unicode示例:

type Z:\5.txt | Out-File -Encoding "unicode" Z:\6.txt

转换后如图:

-Encoding支持的编码有:

ascii

bigendianunicode

default

oem

string

unicode

unknown

utf32

utf7

utf8

编码输入小技巧:打完 -Encoding 空格后,按下Tab键即可自动填充编码名称

需要注意的问题

编码转换不是一定会成功的,其它编码转换成ANSI,文件中必须存在双字节文本(比如中文)!

如果没有双字节文本,那么文件不会被转换成ANSI,而可能变成了UTF-8!

可以测试一下:

wmic cpu | Out-File -Encoding default Z:\7.txt
type Z:\7.txt | Out-File -Encoding default Z:\8.txt

可以看到,无论是直接输出,还是type转换,文件编码都变成了UTF-8。。

再次重申:其它编码转换成ANSI,文件中必须存在双字节文本!

但是ANSI转换成其它编码,没有这个限制。。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐