最近在琢磨Socket和多线程编程的时候, 发现在Win10下打包出来的Jar文件单独运行的时候, 获取到的文字会成为乱码( 此问题Mac下和Win的Idea下都没有出现, 只有Win10 build jar之后会遇到)
解决办法很简单, 在Client通过Socket获取流输入的时候转换成 UTF-8 编码就Ok了
try{
Socket s = new Socket("104.243.20.178",4242);
InputStreamReader streamReader = new InputStreamReader(s.getInputStream(),"UTF-8");
BufferedReader reader = new BufferedReader(streamReader);
String advice = reader.readLine();
displayMessage = advice;
// displayMessage = new String(advice.getBytes("UTF-8"));
System.out.println("Today you should:" + advice);
reader.close();
}catch (IOException ex){
ex.printStackTrace();
}
注意: 在获取完Stream之后修改String的编码方式是没有用的, 见代码块中被注释掉的一段