使用cmd.exe将文本文件保存为UTF-8编码

37

使用Windows命令行cmd.exe保存UTF-8编码的文本文件是否可能?

当前,我正在使用命令重定向操作符创建文本文件:

C:\Windows\system32\ipconfig /all >> output.log

我使用>来创建一个新文件,然后使用>>来添加更多的信息。


3
如果你在使用I/O重定向操作符,那么数据的字符编码不由shell决定,而是由被重定向输出的命令决定。如果该命令产生了有效的UTF-8数据,那么最终存储到文件中的也将是UTF-8数据。 - Celada
我认为 ipconfig 使用的是“Unicode”。 - Endoro
它并不会。像所有控制台模式程序一样,它生成的文本是使用控制台活动的默认8位代码页编码。您可以使用“chcp 65001”将其更改为UTF-8,但仍无法获得BOM。 - Hans Passant
2
cmd /u /c "ipconfig /all" >> output.log - npocmaka
2个回答

50

命令提示符的默认编码是Windows-1252。首先更改代码页(chcp 命令)为65001(UTF-8),然后运行您的命令。

chcp 65001
C:\Windows\system32\ipconfig /all >> output.log

完成后把它改回默认设置。

chcp 1252

这里有一些其他可能有用的代码页。 - Lord ST
1252 可能不是默认代码页。OEM 代码页是默认的。 - Anders

5

就像之前的答案所说,在批处理文件中,你可以使用chcp命令

chcp 65001 > nul
some_command > file

如果你正在使用 cmd.exe 命令行,例如执行用户定义的命令,可以使用以下语法:

cmd.exe /c chcp 65001 > nul & cmd.exe /c some_command > file

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接