乱码之二 servlet之乱码
乱码之二 servlet之乱码
独行侠 发表于2年前
乱码之二 servlet之乱码
  • 发表于 2年前
  • 阅读 6
  • 收藏 0
  • 点赞 1
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

摘要: 乱码之二 servlet之乱码

一 Response(浏览器看到返回的乱码)

servlet的编译过程,跟普通的java class是一样的,其过程比jsp要简单,平时我们遇到的出现乱码的主要在于,通过servlet将一个汉字或者其他字符输出给用户的时候,用户会看到乱码。

按照乱码之一系列,我们可以保证,在java内存中的unicode的中文是正确的,在这个前提下,如果servlet的输出还是乱码,那么可以肯定的是

HttpServletResponse的encoding设置错误了,我们可以通过方法response.setCharacterEncoding设置编码。


由于jsp最终是要先转译成java再编译成class,而这个class是与servlet相一致的,在jsp中的<%@ page language="java" contentType="text/html; charset=GBK"    pageEncoding="UTF-8"%>   contentType就是上面response.setCharacterEncoding这个方法的参数。

你可以在将一个有jsp的项目deploy到tomcat并进入work目录查看生成的jsp对应的java文件,就可以看到。


即,如果我们将一个中文字符输出到eclipse console(console以及DefaultCharset一致)时,是正确的,那么我们在设置response.setCharacterEncoding("UTF-8")之后,再输出这个字符,肯定不会是乱码。



二(用户提交的数据乱码)


通常我们在获得参数的时候,是用request.getParameter(String name)这个方法来获得用户提交的参数的,只是有时候会得到乱码,这是因为我们使用了与浏览器,不一致的解码方式。

通常浏览器(我本地只用firefox进行了测试)在提交非英文字符时,是先通过提交的这个页面响应的编码进行URLEncode编码(使用charset为jsp中contentType的charset),再提交到服务器。然后在server端,通过request.setCharacterEncoding(String charset)所设置的charset进行解码


如果我们要提交的数据所在的页面所响应的charset(第一次请求对response设置的charset)与提交的数据(第二次请求)所使用的解码不一致,就会有乱码。


以上的乱码解决方法只针对post请求,get请求的数据(编码)以及解码是由开发人员决定的。


好了,这样子,我基本将项目开发中所遇到的乱码问题,以其原因和解决方法(知道原因,也就知道解决方法了)写出来,供大家参考.



  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 1
博文 19
码字总数 9797
×
独行侠
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: