所以我有一个最初是英文的批处理文件工具,我已经翻译成各种其他语言。我的情况是许多语言都使用特殊字符。就我而言,它是德语。
所以我可能会用英语:
echo Administrative permissions required. Detecting permissions...
然后在德语中,我会:
Administratorrechte benötigt. Überprüfe Berechtigungen...
它使用不同类型的字符。现在,在我的研究中,我发现了 windows 命令chcp
用于更改代码页。现在,我想做的是更改代码页(或任何其他执行此操作的方式)以允许显示这些字符。我当前的代码页是美国英语的代码页;437
。对于德语,我相信我需要使用1141
(source)。我读到您可以执行诸如更改 CMD 设置或通过注册表进行更永久更改之类的操作。但当随机的人以最小的努力运行该文件时,我需要按需执行此操作。
我尝试将代码页设置为1141
通过增加chcp 1141
在批处理文件的开头,但这会导致错误。批处理文件无法再理解我的命令。
在 Windows 区域和语言设置中配置了德国国家/地区的 Windows 使用 OEM代码页 850这与 OEM 非常相似代码页 437。那些角色ÄÖÜäöüß
两个代码页中具有相同的二进制值。
遗憾的是,在 Windows 8 之前的 Windows 上,使用无 BOM 的 UTF-8 编码(代码页 65001)并不是真正的选择,因为默认控制台字体是光栅字体Terminal不支持统一码。
以 UTF-8 编码的批处理文件,命令行中没有字节顺序标记
@echo off
%SystemRoot%\System32\chcp.com 65001 >nul
echo Es werden Administratorrechte benötigt. Überprüfe Berechtigungen ...
导致在 Windows XP 上没有任何输出,或者在 Windows Vista 和 Windows 7 上只显示错误消息:
系统无法写入指定设备。
UTF-8 编码的批处理文件适用于默认使用字体的 Windows 8 / 8.1 / 10Consolas支持统一码。谢谢eryksun有关此附加信息。
Microsoft 开发人员意识到由于不真正支持 Unicode 而导致的问题,并正在致力于改进 Windows 控制台,请参阅开发人员博客Windows 命令行:Unicode 和 UTF-8 输出文本缓冲区作者:Rich Turner,2018 年 12 月 10 日。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)