使用“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 是一种解决方案 - 但在后台会产生不良的副作用。
最佳答案
代码页改成65001后不知道怎么启动批处理文件。
即使您将批处理文件保存为 utf16-le 或 utf16-be,它也不会启动。
但是你可以运行一个批处理文件并更改里面的代码页,
但重要的是将其余代码缓存在一个 block 中(括号或符号线)。
@echo off
(
chcp 65001
rem Do my UTF work
chcp 850
)
echo This works
chcp 65001 & type myFile & chcp 850
echo This also works
关于utf-8 - Windows XP - cmd.exe - 切换到 utf8 代码页后无法执行批处理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4882518/