包含非 ASCII 字符的批处理文件

Gal*_*ude 5 batch-file

我需要链接到批处理脚本中包含字符“\xc3\xa6”的文件夹。

\n\n

不过,当我运行脚本时,我遇到了麻烦。命令提示符会误读非 ASCII 字符。我尝试将文件保存为 ANSI 和 Unicode。我运行的是 Windows 7。

\n\n

这是一个最小的例子:

\n\n
echo \xc3\xb8l\n
Run Code Online (Sandbox Code Playgroud)\n

Mof*_*ofi 5

默认情况下,控制台窗口中既不使用ANSI也不使用Unicode 。默认情况下,Windows 使用OEM代码页作为控制台。

\n

使用哪个OEM代码页取决于 Windows 国家/地区和语言设置。默认 OEM 代码页(美国和加拿大)为437 ,默认 OEM 代码页为850;对于大多数西欧国家/地区,

\n

对于美国、加拿大和大多数西欧国家,图形用户界面 (GUI) Windows 中的非 Unicode 代码页是Windows-1252 。

\n

字符\xc3\xa6在代码页 Windows-1252 以及 Unicode 表中具有十进制代码值230 (十六进制 E6)。但在 OEM 代码页 437 和 850 中,该字符的十进制代码值为145(十六进制 91)。

\n

因此,必须通过插入 Windows-1252 编码字符将该字符插入到批处理文件中\xe2\x80\x98,或者直接使用适当的 OEM 代码页在文本编辑器中编辑批处理文件。

\n

我正在使用 UltraEdit 编辑文本文件。我已自动使用系统定义的 OEM 代码页(在本例中为代码页 850)为扩展名为 BAT 和 CMD 的文件配置 UltraEdit,并为所有其他非 Unicode 文本文件使用 GUI 窗口的系统代码页(代码页) 1252 就我而言)。将在 Web 浏览器中复制的文本粘贴到批处理文件中时,UltraEdit 还会进行从 Unicode 或 Windows-1252 到 OEM 代码页 850 的必要转换。在将批处理文件中选定的文本复制到剪贴板时,UltraEdit 还将 OEM 编码字符从 850 转换为 1252 和 Unicode。

\n

打开命令提示符窗口并运行命令chcpmode con来查找当前用户帐户在控制台窗口中在 Windows 计算机上使用的 OEM 代码页。

\n