3

使用“mode con cp select=65001”切换到 utf8 代码页后,批处理接缝停止工作,没有任何错误消息。

因此,在代码页 437 或 850 处于活动状态的新启动控制台中执行“cmd.exe /c test.bat”可以正常工作。执行“mode con cp select=65001”工作正常。UTF-8 字符的显示工作正常。执行类似“echo Hallo!”的操作 工作正常。

但是执行“cmd.exe /c test.bat”会停止工作,并且不会显示任何错误消息。

这不仅仅是一个显示错误:批处理文件没有被执行。

切换回任何“旧”字符集可以让它再次正常工作。切换到 UTF8 字符集让它再次停止工作。

当然,放弃 UTF8 是一种解决方案——但在后台会产生不良的副作用。

4

1 回答 1

4

不知道codepage改成65001后怎么启动batch file。
即使你把batch file保存在utf16-le或者utf16-be里面也启动不了。

但是您可以运行一个批处理文件并更改其中的代码页,
但重要的是其余代码缓存在一个块中(括号或与号行)。

@echo off
(
chcp 65001
rem Do my UTF work
chcp 850
)
echo This works

chcp 65001 & type myFile & chcp 850
echo This also works
于 2011-02-03T18:26:42.660 回答