Java WebStart 字符编码问题

3

我有一个JavaFX/Groovy应用程序,我正在尝试本地化。

事实证明,当我在本地使用带有Java VM参数“-Dfile.encoding=UTF-8”的JavaFX标准执行时,所有的国际字符(例如ü)都能正确显示。

然而,如果我通过JNLP文件调用应用程序,使用java-vm-args="-Dfile.encoding=UTF-8"等参数,则无法正确显示。

<resources>
    <j2se version="1.6+" java-vm-args="-Dfile.encoding=UTF-8"/>
    ...other stuff...
</resources>

该应用程序显示国际字符时会变成其他随机字符(如√¬)。
我在JNLP中是否错误地指定了文件编码,还是标准执行和Webstart之间存在影响?
非常感谢。
编辑:我正在使用Groovy API访问Remember The Milk RESTful网络服务。所有有问题的文本都将从检索到的数据(如任务名称)中获取,实际上并没有以二进制或文本形式存储在磁盘上。奇怪的是“-Dfile.encoding=UTF-8”会在本地修复它。

1
原来在JNLP中只能指定某些“受保护”的VM参数。那些被认为不“安全”的参数会被忽略。请参阅http://download.oracle.com/docs/cd/E17476_01/javase/1.5.0/docs/guide/javaws/developersguide/syntax.html#resources,了解可以使用的参数列表。 - Eric Wendelin
根据guid,支持java-vm-args,但仍不支持DFile.encoding。链接(https://docs.oracle.com/javase/8/docs/technotes/guides/javaws/developersguide/syntax.html#secure-property)更新。 - heon
1个回答

4

我强烈建议您在转换文本到二进制或者相反的过程中处处明确指定编码方式。依赖JVM默认值 - 即使您已经设置了默认值 - 对我来说并不是个好主意。虽然您没有明确说明您要做什么,但如果您在保存或加载时显式设置编码方式,就应该没问题。


我更新了我的问题,并提供了有关我如何处理文本的足够信息。干杯。 - Eric Wendelin

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