【发布时间】:2015-08-09 07:56:42
【问题描述】:
我创建了一个包含希伯来语字符的批处理文件。
ECHO אאאאא
运行批处理文件的结果是╫É╫É╫É。
我该如何解决?
【问题讨论】:
标签: batch-file encoding hebrew
我创建了一个包含希伯来语字符的批处理文件。
ECHO אאאאא
运行批处理文件的结果是╫É╫É╫É。
我该如何解决?
【问题讨论】:
标签: batch-file encoding hebrew
看起来您已使用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 表中的希伯来字母。
当我在我的英文 Windows 7 x64 机器上使用默认字体设置 Raster Fonts 在控制台窗口中默认使用 code page 850 看到命令提示符窗口中显示错误的希伯来字符时,我点击了图标命令提示窗口标题栏的左侧,在Properties上打开的菜单中单击并在标签Font上选择Consolas。现在显示的希伯来字母与 Raster Fonts 不同,但仍然不正确。所以 Consolas 在我的机器上也不支持希伯来字母。接下来我尝试了字体 Lucida Console,但希伯来字母再次显示不正确。换句话说,我的机器上用于控制台窗口的 3 种字体中没有一种可用于在具有正确字形的控制台窗口中显示希伯来字母。
如果您对文本编码一无所知,请阅读文本编辑器 UltraEdit 的电源提示页面上的 brief overview of Unicode。
命令提示符环境并不是真正为 Unicode 设计的。在 Windows 控制面板 - 区域和语言 中选择 管理 选项卡。您可以在此处为非 Unicode 程序设置 系统区域设置。还有一个帮助页面的链接,解释了此设置的用途 - 在 Windows GUI (Windows-1255) 和控制台窗口 (OEM 862) 中为单字节编码文本设置默认字体和代码页,并选择了希伯来语(以色列)。
【讨论】:
The system cannot write to the specified device. 此错误可能是仅在使用 OEM 862 编码的批处理文件或选择像 Consolas 或 Lucida Console 之类的字体或更好的支持来自 Unicode 表和 OEM 代码的希伯来字符的等宽字体时才避免使用第 862 页。也可以将 code page Windows-1255 用于批处理文件并在文件中设置此代码页。