如何修复带有希伯来字体的批处理文件?

sha*_*hay 2 encoding batch-file hebrew

我创建了一个包含希伯来语字符的批处理文件。

\n\n
ECHO \xd7\x90\xd7\x90\xd7\x90\xd7\x90\xd7\x90\n
Run Code Online (Sandbox Code Playgroud)\n\n

结果是\xe2\x95\xab\xc3\x89\xe2\x95\xab\xc3\x89\xe2\x95\xab\xc3\x89运行批处理文件。

\n\n

我该如何修复它?

\n

Mof*_*ofi 5

看起来您已使用UTF-8编码批处理文件,保存时没有字节顺序标记 (BOM),希伯来语字母 Aleph 的Unicode 代码值为 05D0。

\n\n

下面的批处理代码复制到不带 BOM 的 UTF-8 编码文件中,在将字符写入控制台窗口之前将代码页更改为 UTF-8 (65001)。

\n\n
@echo off\nchcp 65001 >nul\nECHO \xd7\x90\xd7\x90\xd7\x90\xd7\x90\n
Run Code Online (Sandbox Code Playgroud)\n\n

除了使用多字节编码 UTF-8 之外,还可以使用代码页 862的单字节编码,其中包含映射到代码值 80(十六进制,十进制 128)的该字母。

\n\n
@echo off\nchcp 862 >nul\nECHO \xd7\x90\xd7\x90\xd7\x90\xd7\x90\n
Run Code Online (Sandbox Code Playgroud)\n\n

代码页 862 是希伯来语的 OEM 代码页。

\n\n

在控制台窗口中,通常使用 OEM 代码页。如果打开命令提示符窗口并在此窗口中执行,chcp您可以看到计算机上默认设置的代码页。

\n\n

但是,根据批处理文件使用的编码在批处理文件中设置正确的代码页并不自动意味着在执行批处理文件时在控制台窗口中正确显示希伯来字母。

\n\n

用于控制台窗口的字体也必须支持代码页 862 以及 Unicode 表中的希伯来字母。

\n\n

当我看到在控制台窗口中使用默认代码页 850 的英语 Windows 7 x64 机器上使用默认字体设置光栅字体的命令提示符窗口中希伯来字符显示错误时,我单击了命令提示符窗口标题栏左侧的图标,单击“属性”上打开的菜单,然后在“字体”选项卡上选择“Consolas”。希伯来字母现在的显示方式与光栅字体不同,但仍然不正确。所以Consolas在我的机器上也不支持希伯来字母。接下来我尝试了Lucida Console字体字体,但希伯来字母再次显示不正确。换句话说,我的机器上用于控制台窗口的 3 种字体都不能用于在控制台窗口中以正确的字形显示希伯来语字母。

\n\n

如果您对文本编码一无所知,请阅读文本编辑器 UltraEdit 的强大提示页面上的 Unicode 简要概述。

\n\n

命令提示符环境并不是真正为 Unicode 设计的。在“Windows 控制面板 - 区域和语言”中选择“管理”选项卡。您可以在此处为非 Unicode 程序设置系统区域设置。还有一个帮助页面的链接,解释了此设置的用途 - 在选择了希伯来语(以色列)的 Windows GUI (Windows-1255) 和控制台窗口 (OEM 862) 中为单字节编码文本设置默认字体和代码页。

\n