首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaFX中的Mojibake (在Netbeans中工作得很好)

JavaFX中的Mojibake (在Netbeans中工作得很好)
EN

Stack Overflow用户
提问于 2016-11-12 21:09:51
回答 1查看 67关注 0票数 0

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

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

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

文本有四个地方可能被错误格式化:一个术语列表被发送给译者,后者使用一个web服务来检索翻译(1)。然后将它们缓存在文件(2)中,并由解析器(3)加载,使数据可在JavaFX窗口(4)中显示。我已经检查了这些文件,它们是有效的UTF-8,解析器只有在加载现有文件时才运行,而新部署中没有任何文件。所以我把它缩小到了JavaFX窗口中的显示器。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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参数(这似乎不现实),下面的解决方案就是我个人选择的。

代码语言:javascript
复制
/**
 * 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"));
}

一种简单的小方法,可以根据需要完成任务。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40567684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档