Windows XP - cmd.exe - 切换到utf8代码页后无法执行批处理文件

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是一种解决方案 - 但背景下会带来副作用。


在这种情况下,chcp 65001 是否有任何不同的作用?call test.bat 是否有任何不同的作用? - Joey
1个回答

4

我不知道在将代码页更改为65001后如何启动批处理文件。
即使您将批处理文件保存为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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接