lag*_*lex 6 windows unicode cmd.exe
在 Windows 10 中cmd.exe,如果我这样做
tree
C:.
????a
? ????b
? ????etc...
Run Code Online (Sandbox Code Playgroud)
它清楚地在控制台上正确显示了 Unicode 条形和破折号。
但是如果我将此输出重定向到一个文件
tree > tree.txt
Run Code Online (Sandbox Code Playgroud)
该文件的内容是:
C:.
³ÄÄÄa
³ ÃÄÄÄb
³ ÀÄÄÄetc...
Run Code Online (Sandbox Code Playgroud)
它无法正确写入 Unicode 字符。
它甚至无法回读它所写的内容:
tree > tree.txt
type tree.txt
C:.
????a
? ????b
? ????etc...
Run Code Online (Sandbox Code Playgroud)
(它可能在此处显示为“?”(倾斜方块中的问号)但在控制台中它们显示为空框)
我已经尝试过这些建议而没有运气:
Run Code Online (Sandbox Code Playgroud)CMD /U /c tree > tree.txt
我错误地使用了这个命令,现在已修复,但我仍然得到与刚才相同的结果tree- 它在控制台中显示良好,但文件输出仍然是那些奇怪的字符。
奇怪的是,文本在控制台上显示得很好,但是写入文件会弄乱编码。这里可能是什么问题?
通常用于方框图字符的编码是 850,但即使这样对我的 Windows 8.1 系统也没有帮助。我只找到了一种解决cmd文本编码处理不佳的方法:使用能够很好地处理编码的程序,即 PowerShell。
重定向会>破坏字符,因此我们只需吸收tree输出并将其塞入文件中,而不进行简单的cmd重定向:
Invoke-Expression "tree" | Out-File "tree.txt"
Run Code Online (Sandbox Code Playgroud)
或者,更短:
iex "tree" > "tree.txt"
Run Code Online (Sandbox Code Playgroud)
要创建运行该命令然后退出的 PowerShell 实例,请在命令提示符或批处理文件中使用以下命令:
powershell -command "iex \"tree\" > \"tree.txt\""
Run Code Online (Sandbox Code Playgroud)
生成的文件可以在记事本或普通的type.