我创建了一个包含希伯来语字符的批处理文件。
ECHO אאאאא
运行批处理文件时结果为╫É╫É╫É
。
我该如何解决?
答案 0 :(得分:4)
您似乎已将UTF-8保存的批处理文件编码为byte order mark (BOM),而Hebrew Letter Aleph的Unicode代码值为05D0。
下面的批处理代码被复制到没有BOM的UTF-8编码文件中,在将字符写入控制台窗口之前将代码页更改为UTF-8(65001)。
@echo off
chcp 65001 >nul
ECHO אאאא
不使用UTF-8多字节编码,也可以使用code page 862的单字节编码,其中包含映射到代码值80(十六进制,十进制128)的字母。
@echo off
chcp 862 >nul
ECHO אאאא
代码页862是希伯来语的OEM代码页。
在控制台窗口中,通常使用OEM代码页。如果您打开命令提示符窗口并在此窗口chcp
中执行,则可以看到您的计算机上默认设置了哪个代码页。
但是,根据批处理文件使用的编码在批处理文件中设置正确的代码页并不意味着在执行批处理文件时在控制台窗口中显示正确的希伯来字母。
用于控制台窗口的字体也必须支持代码页862和Unicode表中的希伯来字母。
正如我在控制台窗口中使用默认code page 850在我的英文Windows 7 x64计算机上看到希伯来字符在命令提示符窗口中显示错误并使用默认字体设置光栅字体时,我点击了命令提示符窗口标题栏左侧的图标,在属性上单击打开的菜单,在选项卡字体上选择控制台。现在显示的希伯来字母与光栅字体不同,但仍然不对。所以 Consolas 也不支持我机器上的希伯来字母。接下来我尝试了字体 Lucida Console ,但希伯来字母再次没有正确显示。换句话说,我的机器上可用于控制台窗口的3种字体中的非字体可用于在控制台窗口中显示带有正确字形的希伯来字母。
如果您对文本编码一无所知,请在文本编辑器UltraEdit的电源提示页面上阅读此brief overview of Unicode。
命令提示符环境并非真正针对Unicode设计。选择 Windows控制面板 - 区域和语言选项卡管理。在那里,您可以为非Unicode程序设置系统区域设置。此外,还有一个指向帮助页面的链接,说明了此设置的用途 - 在Windows GUI(Windows-1255)和控制台窗口(OEM 862)中选择希伯来语(以色列)设置单字节编码文本的默认字体和代码页。