问题
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