中文乱码问题
在 Servlet中是通过Service方法的参数传递每次请求的request对象和response对象
request -->HttpServletRequest 封装了所有的请求信息
response---->HttpServletResponse对象 封装了所有的相应操作
每一次请求都会创建 其以上两个对象
在DemoServlet的doGet方法中出现乱码的步骤如下:
//对象response
//PrintWriter out字符流对象 默认的编码方式那么在java中Unicode编码
//out response.getWriter();方法获取的 response对象ISO8895-1的编码方式
PrintWriter out = response.getWriter();
String data = "中国";//UTF-8 GB2312 中国就是字符串
//按照平台的默认字符编码将字符串的字符转化为字节,并完全以write(int)方法的方式写入这些字节
out.println(data);
浏览器输出的“??” 而不是“中国”
//总结
/*1、serlvet程序输出给浏览器的内容,不是任何一种正确的中文字符集编码 是ISO8859-1
*2、浏览器浏览网页文档是所采用的字符集编码与它收到的中文字符本身的字符编码不一致。
* */
那么如何去避免这个问题呢?
步骤如下:
//response对象 因为getbytes获取的是gb2312的数据 而浏览器默认以gb2312打开
//response.setHeader("Content-Type", "text/html; charset=UTF-8");
response.getOutputStream().write("<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">".getBytes());
response.getOutputStream().write("中国".getBytes("UTF-8"));
response.getOutputStream().write((98+"").getBytes());