概述
HttpServletRequest:这个对象封装了客户端提交过来的一切数据
客户端提交数据给服务端(这里指的是在网页输入内容提交servlet处理时,在servlet控制台的输出乱码),如果数据中带有乱码,可参照如下方法解决:
- 如果是GET请求(若无乱码则无需修改)
String name=request.getParameter("username"); String password=request.getParameter("password"); System.out.println("名字是:"+name+",密码是:"+password); //get请求过来的数据,在url上已近经过编码了,所以我们渠道的是乱码 //tomcat收到这些数据后,getParameter默认使用"ISO-8859-1"去解码 //先让文字回到"ISO-8859-1"对应的字节数组,然后按"utf-8"拼接字符串 String username=new String(name.getBytes("ISO-8859-1"),"utf-8"); System.out.println(name+"="+username);
或者可以在tomcat目录下conf下的server.xml中8080端口下添加 URIEncoding="UTF-8"
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>
-
如果是POST请求(若无乱码则无需修改),一定要写在POST方法获取数据之前设置字符编码(第一句就行)
//这个说的是设置请求体里面的文字编码,get请求设置无效,因为get请求的数据在地址栏中,请求体是空的 request.setCharacterEncoding("utf-8"); String name=request.getParameter("username"); String password=request.getParameter("password"); System.out.println("名字是:"+name+",密码是:"+password);
HttpServletResponset:负责返回数据给服务端:输出文字两种方法都可以,但是输出文件就不能用字符流了。
//以字节流的方式写出
response.getOutputStream().write("kook你".getBytes());
//向客户端输出,以字符流的方式写出
PrintWriter pw=response.getWriter();
pw.write("okokokk好好好");
中文乱码的解决:
- 如果是字符流输出(有时候设置“utf-8”输出还是乱码,可以改变一下浏览器的编码格式):
//这里写出去的文字,默认使用ISO-8859-1,我们可以指定写出去的时候,用什么编码写 // 1.指定输出到客户端时,这些文字使用 UTF-8 编码 response.setCharacterEncoding("UTF-8"); // 2.直接规定浏览器看到这份数据的时候,使用什么编码来看 response.setHeader("Content-Type","text/html;charset=UTF-8"); response.getWriter().write("大家好啊");
-
如果是字节流输出
//以字节流输出 /* * 如果想让服务器端出去的中文,能够在客户端正常显示,只需要确保一点 * 出去的时候使用的编码,和客户端看这份数据的时候使用的是编码是一致的 * 默认情况下getOutputStream()输出使用的是UTF-8的码表 * 如果要改变编码,"我是个中国人".getBytes()在括号中填写编码 */ //设置浏览器响应的数据类型是html文本,并告知浏览器,使用UTF-8来编码 response.setContentType("text/html;charset=utf-8"); response.getOutputStream().write("我是个中国人".getBytes());
最后
以上就是魁梧钢笔为你收集整理的java实现Servlet的中文乱码处理的全部内容,希望文章能够帮你解决java实现Servlet的中文乱码处理所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复