使用JavaFX在Netbeans中处理一个简单的翻译项目。从Netbeans运行它,它编译和工作完美。无渲染问题:

但是,当运行相同的可执行文件(Project-文件夹\dist\translator.jar)时:

莫吉贝克。(project-folder\dist\run##########\Translator.jar):也是如此

文本有四个地方可能被错误格式化:一个术语列表被发送给译者,后者使用一个web服务来检索翻译(1)。然后将它们缓存在文件(2)中,并由解析器(3)加载,使数据可在JavaFX窗口(4)中显示。我已经检查了这些文件,它们是有效的UTF-8,解析器只有在加载现有文件时才运行,而新部署中没有任何文件。所以我把它缩小到了JavaFX窗口中的显示器。
发布于 2016-11-15 19:43:38
很抱歉,我的问题不是很好,但我遇到过许多有类似问题的人,很难把我的具体情况分开。
问题的症结在于Netbeans将自动执行以UTF-8作为默认编码的所有JVM会话(据我所知)。通常情况下,这不是一个问题,但是当使用UTF-8规范中有争议的代码点的语言时,这可能会保证使用UTF-8以外的编码的任何JVM都会吐出mojibake。这是其中的大多数,因为JVM规范指出,最佳实践是使用主机系统的编码,这通常不是UTF-8。
Java compiler platform file encoding problem的问题帮助我解决了这个问题。由于我无法访问我的代码将在其上运行的每个系统的JVM参数(这似乎不现实),下面的解决方案就是我个人选择的。
/**
* Converts a string from the system default encoding into UTF-8.
* This fixes rendering issues for UTF-8 characters where the default
* encoding would yield mojibake. Should be run against any Strings that
* will be displayed to the end user directly that may contain UTF-8
* characters.
*
* @param string The String to be re-encoded.
* @return the re-encoded string
*/
public static String convertToUTF8(String string){
return new String(string.getBytes(Charset.defaultCharset()), Charset.forName("UTF-8"));
}一种简单的小方法,可以根据需要完成任务。
https://stackoverflow.com/questions/40567684
复制相似问题