1

这真的很奇怪,当我在 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 时。

有什么想法吗?

4

1 回答 1

2

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

PrintWriter pw = new PrintWriter(os);

当您不设置特定字符集时,行为将取决于平台。例如,将考虑环境变量,从 Netbeans 内部启动时可能会有所不同。

始终指定要使用的字符集

PrintWriter pw = new PrintWriter(new OutputStreamWriter(os, "UTF-8")); // 管他呢

于 2013-09-03T04:18:13.780 回答