java 字符编码问题

来源:百度知道 编辑:UC知道 时间:2024/07/07 04:04:51
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{

PrintWriter pw=response.getWriter();
pw.println("Hello,好久都看到家看到家");
pw.close();
}

这个servlet的doGet()方法中打印出来为什么中文全成了问号了啊?
java默认字符编码不是Unicode的吗?Unicode的不是支持中文的吗?为什么会打印不了中文呢?
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
OutputStreamWriter out=new OutputStreamWriter(response.getOutputStream());
out.write("红色经典");
out.close();
}
我用这个输出流怎么就不用设置字符编码呢?

默认编码是ISO-8859-1,中文肯定是乱码。转换成GBK,或gb2312,或者utf-8

先response.setCharacterEncoding("gb2312");

在"PrintWriter pw=response.getWriter();"前
加一条语句:
"response.setCharacterEncoding("gb2312");"
就OK

我可以负责任的说,这是一个简单的问题。

String的编码是Unicode.
response和request的编码是和应用服务器有关的.

PrintWriter , OutputStreamWriter 内部实现应该不是一样的吧!
建议你在学习java的时候多看下。

给你个英文的区别,http://answers.yahoo.com/question/index?qid=20080426060635AAke33c