当我在Eclipse上运行我的应用程序时,我可以看到正确的拉丁字符,如下所示:
但是当我导出到runnable jar文件并执行它时,特殊字符是错误的,如下所示:
我不知道为什么会这样。在Mac上,Eclipse和.jar文件都可以。但是在Windows上它还不行。
我从网络服务器获取数据,然后在JavaFX ListView中显示。
答案 0 :(得分:2)
这是一个转换为UTF-8字节的字符串,显示为某些Windows编码。
我猜你这样做了:
URL url = ...
BufferedReader in = new BufferedReader(
new InputStreamReader(url.openStream());
你应该这样做:
URL url = ...
BufferedReader in = new BufferedReader(
new InputStreamReader(url.openStream(),
StandardCharsets.UTF_8));
没有Charset的构造函数InputStreamReader将使用当前的默认平台编码 - 错误。
对于任何网址,您可以首先执行openConnection
并尝试对提供的编码进行判断。策略有点间接:
Java在String, char
中保留Unicode,因此可以同时处理所有脚本。
二进制数据byte[], InputStream, OutputStream
需要指定字符集/编码,必须从/转换为文本。