response解决中文输出乱码问题,request解决请求参数的乱码问题

浏览器显示乱码:

原因: 在Servlet中使用getWriter().write(“中国”)字符输出流(编译器为UTF-8编码)进行输出中文的时候,在浏览器显示乱码,原因是HttpServletResponse默认使用ISO8859-1码表,而ISO8859-1字符码表不兼容中文,如中国会被解析为 编码63 63,结果在浏览器汇用GB2312码表将 63 63 解码为 ? ?

解决方案:
方法1.使用 responsesetCharacterEncoding(String charset) 方法设置response的编码,更改HttpServletResponse 的默认使用的编码, 此方法客户端还是不能正常显示文字,原因是: 我们将response缓冲区的编码设置成UTF-8,但浏览器的默认编码是本地系 统的编码,因为我们都是中文系统,所以客户端浏览器的默认编码是GBK,我们可以 手动修改浏览器的编码是UTF-8。
也可以再次使用 responsesetHeader(“Content-Type”,“text/html;charset=utf-8”) 方法来通知浏览器使用UTF-8编码。
方法2. 还可以在代码中指定浏览器解析页面的编码方式,
通过responsesetContentType(String type) 方法指定页面解析时的编码是UTF-8
response.setContentType(“text/html;charset=UTF-8”);
上面的代码不仅可以指定浏览器解析页面时的编码,同时也内含 setCharacterEncoding的功能,所以在实际开发中只要编写 response.setContentType(“text/html;charset=UTF-8”);

请求参数出现中文乱码:

原因:
POST请求: 当HTML设置为UTF-8编码,而对POST请求HttpServletRequest接收参数时解码时采用的是默认的ISO8859-1编码,因此会导致乱码的出现。
GET请求: 浏览器在地址栏进行数据传输的时候,HTTP协议不支持中文,统一使用ISO8859-1 编码,所以服务器端获取的就是乱码。

解决方案:

  • 对于POST请求,设置request对象的解码方式,解决post提交方式 的乱码:request.setCharacterEncoding(“UTF-8”);
  • 对于GET请求, 需要再次解码,将得到的数据parameter转码以支持中文,如parameter = new String(parameter.getbytes(“iso8859-1”),“utf-8”); 即可
全部评论

相关推荐

11-01 20:03
已编辑
门头沟学院 算法工程师
Amazarashi66:这种也是幸存者偏差了,拿不到这个价的才是大多数
点赞 评论 收藏
分享
我是小红是我:学校换成中南
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务