Java 如何使PrintWriter编写UTF-8?

Java 如何使PrintWriter编写UTF-8?,java,utf-8,printwriter,Java,Utf 8,Printwriter,如何使PrintWriter写入UTF-8 pstream = new PrintWriter(csocket.getOutputStream(), true); String res = "some string"; pstream.println(res); // here I want to output string as UTF-8 使用OutputStreamWriter: pstream = new PrintWriter(new OutputStreamWriter(

如何使
PrintWriter
写入UTF-8

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

使用
OutputStreamWriter

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


快速:您可以使用讨论中建议的-Dfile.encoding=utf8 JVM参数或方法(参见第二个答案)。

您只能使用任何字符集写入文件,否则使用的平台默认字符集请参见不要使用PrintWriter。如果需要UTF-8编码,只需直接写入OutputStream

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

这个问题与android无关。JVM
文件.encoding
使我免于多年来一直存在的问题。谢谢@Danil!虽然这是可能的,但这并不能为OP提供一个
Writer
可能要查找的内容。在某些情况下,
java.io.PrintWriter
无法避免,例如,当子类化
javax.servlet.http.HttpServletResponseWrapper
时。注意:
OutputStreamWriter
文档建议在BufferedWriter中使用包装以提高效率
csocket.getOutputStream().write(res.getBytes("UTF-8"));
OutputStream os = new FileOutputStream("file.txt");
PrintWriter pw = new PrintWriter(new OutputStreamWriter(os, "UTF-8"));