这适用于 Windows XP 和 Windows 7。
我的一些文件的名称带有欧洲字符,例如德语 a-umlaut,也称为 a-diaeresis。
这些在 Windows 资源管理器中正确显示,并且在响应“dir”命令的命令 shell (cmd.exe) 窗口中也能正确显示。
但是,如果该“dir”命令指向一个文件,例如
dir > file.txt
那么该文件中的欧洲字符将以 DOS 代码页表示;例如,a-umlaut 表示为十进制 132(十六进制 0x84)。这不是我想要的。我希望文件采用 ANSI 代码页,例如,a-umlaut 为十进制 228(十六进制 0xE4)。
发出命令“cmd /?”将产生帮助信息,其中包括以下行
/A Causes the output of internal commands to a pipe or file to be ANSI
这听起来正是我想要的。但是,无论是命令序列
cmd /A
dir > file.txt
exit
或等效的单个命令行
cmd /A /C dir > file.txt
生成与以前完全相同的 file.txt;其欧洲字符仍然在 DOS 代码页中。
所以我的问题是,如何让“dir”在 ANSI 代码页中写入文件?
- 富有的
答案1
我认为有一种简单的方法,“从盒子里”
chcp 1252
dir > file.txt
答案2
字母“A”将您引入了歧途。该/A
选项并没有区分“ANSI”和“OEM”代码页。而是区分了 8 位单字节/多字节字符集和 16 位 Unicode(该/U
选项)。 从 Win32 程序(例如)到控制台的 8 位 SBCS/MBCS 输出CMD
在“OEM”代码页中处理。