Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Eclipse上导出应用程序后的不同字符_Java_Eclipse_Javafx - Fatal编程技术网

Java Eclipse上导出应用程序后的不同字符

Java Eclipse上导出应用程序后的不同字符,java,eclipse,javafx,Java,Eclipse,Javafx,在Eclipse上运行应用程序时,我可以看到正确的拉丁字符,如下所示: 但当我导出到runnable jar文件并执行它时,特殊字符是错误的,如下所示: 我不知道为什么会这样。在Mac上,Eclipse和.jar文件都可以。但在Windows上,这是不好的 我从Web服务器获取数据,并在JavaFX列表视图中显示。它是一个转换为UTF-8字节的字符串,显示为一些Windows编码 我猜是你干的: URL url = ... BufferedReader in = new BufferedRe

在Eclipse上运行应用程序时,我可以看到正确的拉丁字符,如下所示:

但当我导出到runnable jar文件并执行它时,特殊字符是错误的,如下所示:

我不知道为什么会这样。在Mac上,Eclipse和.jar文件都可以。但在Windows上,这是不好的


我从Web服务器获取数据,并在JavaFX列表视图中显示。

它是一个转换为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));
没有字符集的构造函数InputStreamReader将使用当前默认平台编码-错误

对于任何URL,您都可以首先进行一次测试,并尝试预测所交付的编码。该策略有点间接:

  • connection.getContentEncoding()/getContentType
  • 默认值为ISO-8859-1
  • 当ISO-8859-1采用Windows-1252时,as浏览器也会这样做
Java将Unicode保存在
字符串、char
中,因此可以同时处理所有脚本


二进制数据,
byte[],InputStream,OutputStream
,需要指定字符集/编码,当它必须从文本转换为文本时。

它是一个转换为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));
没有字符集的构造函数InputStreamReader将使用当前默认平台编码-错误

对于任何URL,您都可以首先进行一次测试,并尝试预测所交付的编码。该策略有点间接:

  • connection.getContentEncoding()/getContentType
  • 默认值为ISO-8859-1
  • 当ISO-8859-1采用Windows-1252时,as浏览器也会这样做
Java将Unicode保存在
字符串、char
中,因此可以同时处理所有脚本


二进制数据,
byte[],InputStream,OutputStream
,需要指定字符集/编码,当它必须从/转换为文本时。

非常感谢@Joop Eggen。现在工作完成了,非常感谢@Joop Eggen。现在它的工作完美