这真的很奇怪,当我在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时发生。
任何想法发生了什么?
答案 0 :(得分:2)
当您使用的文本编码不支持给定字符时,您会收到问号。
PrintWriter pw = new PrintWriter(os);
当您未设置特定字符集时,该行为将变为与平台相关。例如,将考虑环境变量,从Netbeans内部开始可能会有所不同。
始终指定要使用的字符集
PrintWriter pw = new PrintWriter(new OutputStreamWriter(os,“UTF-8”)); //或其他什么