例如,假设我有一个名为'test.cmd'的批处理文件,它只包含:

echo %1

我可以使用'test.cmd some¬ arg'直接从命令提示符调用它,结果是字符串'some¬ arg'打印。

但是,如果我将同一个调用放在第二个批处理文件中,为了参数而调用'tester.cmd',我从命令提示符调用它,结果就是字符串<代码>'some%arg'已打印。

什么是扰乱编码,我该如何解决它?我相信我之前已经解决了这个问题,但我记不起来了......

谢谢!

有帮助吗?

解决方案

这是因为批处理文件的编码方式与cmd.exe当前所在的代码页不同。

在西部默认配置中,cmd.exe在 CP850 中启动,但文本编辑器通常在 CP1252 (通常被错误地称为Latin-1或ISO-8859-1)。

字符“&#172;”和“&#188;”在这两个代码页中共享相同的字符代码,“BC”。

解决方案很简单。在代码页850中编码批处理文件,或通过发出 chcp 1252 将cmd.exe切换到代码页1252。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top