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"));