我有一个build.xml文件,它用日文字符指定一个目录作为命令的参数。
<exec executable="${amxmlc_cmd}">
<arg line="${amxmlc_opt}" />
...
<arg line="-source-path+=Work/システム/_config_as" />
...
</exec>
,
<condition property="amxmlc_cmd" value="cmd.exe">
<os family="windows" />
</condition>
<condition property="amxmlc_opt" value='/c "${flex_sdk}bin/amxmlc"'>
<os family="windows" />
</condition>
我得到错误"错误:无法打开'工作/????/_config_as"
I changed to
<condition property="amxmlc_opt" value='/u/c "${flex_sdk}bin/amxmlc"'>
<os family="windows" />
</condition>
但是我得到了相同的错误。
当我将windows非unicode程序默认设置为日语时,我得到了错误" error: cannot open 'Work//_config_as "
非常感谢任何帮助。
这是ant,它没有正确传递Unicode参数。只有当您将系统语言环境设置为日语并重新启动时才会起作用。http://mihai-nita.net/2005/06/11/setting-the-user-and-system-locales/
= = =
更正:做了一些测试,这不是蚂蚁的错,这是Java本身。两个Runtime我都试过了。exec和ProcessBuilder。它们似乎都在将参数传递给子应用程序之前将其转换为ANSI。(子应用程序是C, Unicode,并从C父应用程序Unicode调用,工作正常)
非常蹩脚,对于2011年(Java构建1.6.0_26-b03,在7中尝试一下会很有趣)