使用PrintWriter在java中将国际字符写入HttpServletResponse时,它显示为你好;

使用PrintWriter在java中将国际字符写入HttpServletResponse时,它显示为你好;,java,cjk,printwriter,Java,Cjk,Printwriter,当我们使用PrintWriter编写一个中文内容,该内容作为对HttpServletResponse的REST调用的响应,如下所示,问题就出现了。在servlet中,当我们使用下面的代码时,它将作为CSV下载。下载的CSV具有ä½¥½。 使用的示例代码 // Sample Chinese content got as response from REST call String content ="你好"; response.setContentType("text/csv; charset=U

当我们使用PrintWriter编写一个中文内容,该内容作为对HttpServletResponse的REST调用的响应,如下所示,问题就出现了。在servlet中,当我们使用下面的代码时,它将作为CSV下载。下载的CSV具有ä½¥½。 使用的示例代码

// Sample Chinese content got as response from REST call
String content ="你好";
response.setContentType("text/csv; charset=UTF-8");
response.addHeader("Content-Disposition", "attachment; filename=Name.csv");

PrintWriter out = response.getWriter();
out.print(content);
out.flush();
out.close();

是否有人可以帮助提供在csv文件中打印这些字符的方法。

首先,确保编译器使用的编码与保存源文件时使用的编码匹配;如果将源代码保存为UTF-8,编译器需要将该文件视为UTF-8文件。第二,记住设置响应的编码;如果您不设置它,。我的输出是一个文件,在响应中,我在内容类型中给出了“UTF-8”,如果我将字符编码设置为UTF-8,它也不工作。。。我给回复写的内容来自REST调用。当你说“下载的CSV有ä½å¥½”时,你是如何确定的?您如何查看下载的文件?记事本假定文件使用单字节Windows编码,如Windows-1252,除非文件中的第一个字符是字节顺序标记(
\ufeff
)。我正在Windows系统中使用Excel查看文件。。基本上,在我的应用程序中有一个工具,可以将UI中显示的内容下载到最终用户的系统中。因此,当用户下载中文或任何其他国际内容时,显示方式会有所不同。因此,我需要确保写入文件的内容与UI中显示的内容相匹配。Does
String content=“\ufeff你好";产生不同的结果?