批处理文件中使用非ASCII字符

5

我需要在批处理脚本中链接到一个包含字符“æ”的文件夹。

但是当我运行脚本时遇到了麻烦。命令提示符无法正确读取非ASCII字符。我已经尝试将文件保存为ANSI和Unicode格式,但都没有起作用。我使用的是Windows 7操作系统。

这里有一个最简单的示例:

echo øl

2
我知道如何解决这个问题,但是我不了解背后的机制,无法给出一个合适的答案。基本上,用 (ALT+0145)替换 æ 即可。 - SomethingDark
2个回答

5
在控制台窗口中,默认情况下既不使用ANSI也不使用Unicode。Windows默认为控制台使用OEM代码页。
所使用的OEM代码页取决于Windows的国家/地区和语言设置。对于美国和加拿大,默认的OEM代码页是437,对于大多数西欧国家,默认的OEM代码页是850
在图形用户界面(GUI)窗口中,非Unicode代码页为Windows-1252,适用于美国、加拿大和大多数西欧国家。
字符æ在Windows-1252代码页和Unicode表中的十进制代码值均为230(十六进制为E6)。但在OEM代码页437和850中,该字符的十进制代码值为145(十六进制为91)。

所以,这个字符必须通过向批处理文件插入Windows-1252编码字符,或者直接在文本编辑器中使用适当的OEM代码页来编辑批处理文件。

我正在使用UltraEdit编辑文本文件。我已经配置UltraEdit,自动使用系统定义的OEM代码页(在我的情况下是代码页850)来处理扩展名为BAT和CMD的文件,并且对于所有其他非Unicode文本文件,使用系统代码页作为GUI窗口的代码页(在我的情况下是代码页1252)。当将从Web浏览器等地方复制的文本粘贴到批处理文件中时,UltraEdit还会进行必要的从Unicode或Windows-1252到OEM代码页850的转换。而且,当将批处理文件中的选定文本复制到剪贴板时,UltraEdit还会将OEM编码字符从850转换为1252和Unicode。

打开命令提示符窗口,并运行命令chcpmode con,以查找在Windows计算机上控制台窗口中当前用户账户所使用的OEM代码页。


1

我使用Notepad++。选择第一个编码(例如OEM 850)并正常输入。


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