【发布时间】:2011-08-23 14:33:20
【问题描述】:
这可能以前已经回答过,但那是关于 unicode 的,我认为这不是 unicode(它是 ASCII 所以......)。
当我在终端中执行此操作时,没有任何问题
vboxmanage setextradata "Test Machine" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/HostPort" 2222
但是当我在 Java 中使用以下内容时
Runtime.getRuntime().exec("vboxmanage setextradata \"Test Machine\" \"VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/HostPort\" 2222");
返回错误:未注册的 vm '"TestMachine"'
对于像Test\ Machine这样的带有空格的参数也是如此,然后它不会转义空格。
现在我认为这与字符编码有关,但我没有看到任何设置 o_O 的选项
【问题讨论】:
-
看起来不像是编码问题。请参阅
ProcessBuilder,了解如何为程序指定参数。 -
为什么
TestMachine需要加引号或转义? -
因为这是在一个通用函数内部,并且有可能会有带空格的VM名称,因此我们需要引号。我会更改它以使其更清晰。
标签: java character-encoding escaping exec runtime.exec