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