很抱歉,我的问题不是很好,但我遇到过很多有类似问题的人,很难为我的具体情况隔离开来。
问题的症结在于,Netbeans 将自动执行所有使用 UTF-8 作为默认编码的 JVM 会话(据我所知)。通常这不是问题,但是当使用在 UTF-8 规范中利用有争议的代码点的语言时,这可能会保证 mojibake 将被任何使用 UTF-8 以外的编码的 JVM 吐出。这是其中的大多数,因为 JVM 规范说最佳实践是使用主机系统的编码,这通常不是 UTF-8。
Java编译器平台文件编码问题帮助我解决了这个问题。由于我无法访问我的代码将在其上运行的每个系统的 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"));
}
一个完成工作的简单小方法,根据需要调用。