sor*_*rin 8 unicode console cmd ansi io-redirection
如果您在Windows上进行自动化并且您正在重定向不同命令的输出(内部cmd.exe或外部,您将发现您的日志文件包含组合的Unicode和ANSI输出(意味着它们无效并且在查看器/编辑器中无法正常加载) ).
是否可以使cmd.exe与UTF-8一起使用?这个问题不是关于stdin/stdout/stderr重定向和Unicode的显示.
我正在寻找一个可以让你的解决方案:
如果不可能使用批处理文件获得这种一致性,是否有另一种解决此问题的方法,比如使用python脚本编写?在这种情况下,我想知道是否可以单独进行Unicode检测(使用脚本的用户不应该记住被调用的工具是否会输出Unicode,它只是希望将输出转换为UTF-8.
为简单起见,我们假设如果工具输出不是Unicode,则将其视为UTF-8(无代码页转换).
您可以使用chcp更改活动代码页.这也将用于重定向文本:
chcp 65001
Run Code Online (Sandbox Code Playgroud)
但请记住,如果cmd使用/u强制Unicode(在本例中为UTF-16)重定向输出的开关启动,则无效.如果该开关处于活动状态,则无论设置的代码页如何,所有输出都将为UTF-16LE chcp.
另请注意,设置为光栅字体时,控制台将无法用于交互式输出.在这种情况下,我得到了有趣的错误消息:
C:\Users\Johannes Rössel\Documents>x
Active code page: 65001
The system cannot write to the specified device.
Run Code Online (Sandbox Code Playgroud)
因此,要么使用合理的设置(控制台的TrueType字体),要么在交互式使用控制台并且路径包含非ASCII字符时不要使用此特技.
| 归档时间: |
|
| 查看次数: |
14324 次 |
| 最近记录: |