How to make the PrintWriter to write UTF-8?

♀尐吖头ヾ 提交于 2019-12-03 08:08:33

问题


How to make the PrintWriter to write UTF-8?

pstream = new PrintWriter(csocket.getOutputStream(), true);
String res = "some string";
pstream.println(res); // here I want to output string as UTF-8

回答1:


Use an OutputStreamWriter:

pstream = new PrintWriter(new OutputStreamWriter(
    csocket.getOutputStream(), StandardCharsets.UTF_8), true)



回答2:


Look at Java: Difference between PrintStream and PrintWriter discussion.

To be quick: you can use -Dfile.encoding=utf8 JVM parameter or method suggested in the discussion (see second answer).




回答3:


Don't user PrintWriter. If you need UTF-8 encoding, just write direct to the OutputStream.

csocket.getOutputStream().write(res.getBytes("UTF-8"));



回答4:


PrintWriter out1 = null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    out1 = new PrintWriter(new OutputStreamWriter(socket.getOutputStream(), StandardCharsets.UTF_8),true);
} else { 
    out1 = new PrintWriter(new OutputStreamWriter(socket.getOutputStream(), "UTF8"), true);
}



回答5:


you can only write to file with any charset, otherwise platform default charset used see doc



来源:https://stackoverflow.com/questions/21096367/how-to-make-the-printwriter-to-write-utf-8

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!