Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.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 导出到JAR时,从套接字读取编码字符不工作_Java_Eclipse - Fatal编程技术网

Java 导出到JAR时,从套接字读取编码字符不工作

Java 导出到JAR时,从套接字读取编码字符不工作,java,eclipse,Java,Eclipse,如果我在eclipse中以java应用程序的形式运行,没有问题,但是如果我将项目导出为可运行的jar文件,我会遇到编码问题吗 如果它从eclipse运行,我可以通过套接字读取来自服务器的字符“ş”。如果它作为一个可运行的jar运行,我就无法读取字符“ş” 我怎样才能解决这个问题 编辑 使用当前平台的默认编码创建字符串。这在Eclipse中和Eclipse之外可能有所不同 改用 new String(buff, StandardCharsets.UTF_8) 指定字节数组应始终被视为UTF-8(

如果我在eclipse中以java应用程序的形式运行,没有问题,但是如果我将项目导出为可运行的jar文件,我会遇到编码问题吗

如果它从eclipse运行,我可以通过套接字读取来自服务器的字符“ş”。如果它作为一个可运行的jar运行,我就无法读取字符“ş”

我怎样才能解决这个问题

编辑

使用当前平台的默认编码创建字符串。这在Eclipse中和Eclipse之外可能有所不同

改用

new String(buff, StandardCharsets.UTF_8)
指定字节数组应始终被视为UTF-8(假设您接收的是UTF-8)


另外,不要忘记关闭流。

顺便说一句,编码问题可能与您使用的终端设置有关。代码可以很好地工作,首先关闭打开的
,您是否得到任何
输出
?我没有得到任何堆栈跟踪,我得到的是“ÿ”而不是“ş”,我得到的字符字节数为“-60-70”(在eclipse或windows的runnable jar中),但在eclipse中我读作“ğ”。如果我在windows中作为一个可运行的jar运行,我读到“ÿ”您是否尝试更改您的控制台格式,我的意思是它是否在
utf-8
中?是的,在eclipse中我不需要定义字符集,但在eclipse之外我必须定义它。
new String(buff)
new String(buff, StandardCharsets.UTF_8)