我正在尝试发送包含英语和俄语文本的消息,但俄语文本显示为" ?? ???????"
PrintWriter writer = new PrintWriter(clientSocket.getOutputStream());
writer.println("English" + "На русском");
writer.flush();
有没有办法解决这个问题?
答案 0 :(得分:1)
所以,你的问题与IntelliJ IDEA无关。
仅接受PrintWriter
的{{1}}构造函数会创建一个OutputStream
,它使用JVM的默认字符编码。您可以通过调用PrintWriter
来检查JVM的默认字符编码。但是,您不应该依赖它在发送端或接收端具有任何特定值。最好是设置JVM的默认字符编码,或者在创建Charset.defaultCharset()
时提供特定的字符编码。以下应该这样做:
PrintWriter
如果您同时控制发送方和接收方,则可能必须在另一方添加 Charset charset = StandardCharsets.UTF_8;
OutputStreamWriter osw = new OutputStreamWriter( outputStream, charset );
PrintWriter printWriter = new PrintWriter( new BufferedWriter( osw ) );
的{{1}}。