Java编译成Jar后无法正常工作时发送UTF-8字符

时间:2013-09-03 04:02:50

标签: java

这真的很奇怪,当我在NetBeans中运行我的应用程序时,一切正常。然而,当我将应用程序构建到Jar中并从Jar运行时,以下代码将ä,ö,å等字符转换为?

os = new DataOutputStream(socket.getOutputStream()); 
String string = "{\"id\":1,\"type\":\"" + methoden + "\",\"message\":\"" + msget + "\"}";

PrintWriter pw = new PrintWriter(os);
pw.println(string);
pw.flush(); 

在上面的例子中String msget = "Hej där, vad händer"

当我在服务器上安装console.log时,我得到:{"id":"1", "type":message, "message": "Hej d?r, vad h?nder "}

同样,这只会在我将我的应用程序编译成Jar时发生。

任何想法发生了什么?

1 个答案:

答案 0 :(得分:2)

当您使用的文本编码不支持给定字符时,您会收到问号。

  

PrintWriter pw = new PrintWriter(os);

当您未设置特定字符集时,该行为将变为与平台相关。例如,将考虑环境变量,从Netbeans内部开始可能会有所不同。

始终指定要使用的字符集

  

PrintWriter pw = new PrintWriter(new OutputStreamWriter(os,“UTF-8”)); //或其他什么