9

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

echo %1

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

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

是什么弄乱了编码,我该如何解决?我确定我以前解决过这个问题,但我不记得是如何...

谢谢!

4

1 回答 1

9

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

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

字符“¬”和“¼”在这两个代码页“BC”中共享相同的字符代码。

解决方案很简单。在代码页 850 中对批处理文件进行编码,或者通过发出chcp 1252.

于 2008-10-31T10:00:39.970 回答