在为他人制作的批处理文件中使用另一种语言(代码页)

1 windows cmd batch-file codepages

所以我有一个最初是英文的批处理文件工具,我正在翻译成各种其他语言。我的情况是许多语言都使用特殊字符。就我而言,它是德语。

所以我可能有英文版:

echo Administrative permissions required. Detecting permissions...
Run Code Online (Sandbox Code Playgroud)

然后在德语中,我会:

Administratorrechte benötigt. Überprüfe Berechtigungen...
Run Code Online (Sandbox Code Playgroud)

其中使用不同类型的字符。现在,在我的研究中,我找到了chcp用于更改代码页的 windows 命令。现在,我想要做的是更改代码页(或任何其他方式)以允许显示这些字符。我当前的代码页是美国英语的;437. 对于德语,我相信我需要使用1141( source )。我读到您可以执行诸如更改 CMD 设置或通过注册表进行更永久更改之类的操作。但是当一个随机的人以最小的努力运行这个文件时,我需要这个。

我尝试1141通过chcp 1141在批处理文件的开头添加来设置代码页,但这会导致错误。批处理文件无法再理解我的命令。

Mof*_*ofi 5

在 Windows 区域和语言设置中配置了德国国家/地区的 Windows 使用 OEM代码页 850,这与 OEM代码页 437非常相似。字符ÄÖÜäöüß在两个代码页中具有相同的二进制值。

不幸的是,使用没有 BOM 的 UTF-8 编码(代码页 65001)在 Windows 8 之前的 Windows 上没有真正的选择,因为默认的控制台字体是不支持 Unicode 的光栅字体终端

以 UTF-8 编码的批处理文件,命令行没有字节顺序标记

@echo off
%SystemRoot%\System32\chcp.com 65001 >nul
echo Es werden Administratorrechte benötigt. Überprüfe Berechtigungen ...
Run Code Online (Sandbox Code Playgroud)

导致在 Windows XP 或 Windows Vista 和 Windows 7 上没有任何输出,只显示错误消息:

系统无法写入指定的设备。

UTF-8 编码的批处理文件适用于 Windows 8 / 8.1 / 10,它默认使用支持 Unicode的字体Consolas。感谢eryksun提供此附加信息。