本帖最后由 郑委员 于 2018-10-11 17:59 编辑
声明:tomcat7默认iso8859-1编码,tomcat8默认就是utf-8编码,浏览器默认编码是 gbk 页面编码一般我们都会写utf-8
request获取中文参数乱码:
页面是以utf8编码提交到服务器的,而服务器(Tomcat)内
部使用Iso-8859-1进行编码,所以当我们在servlet中获取request对象的中文参数时会乱码,解决的办法有两个
1、更改服务器的编码,变为utf8,和页面提交的编码格式一致,所以数据就会正常显示 tomcat8默认就是utf-8编码
2、先用iso8859-1解码,再用utf8编码,username=new String(username.getbytes("iso8859-1"),"utf-8")
3、URLdecode-URLencode,原理同2;
4、request.setCharacterEncoding("utf-8") 仅post方式,因为只有post有请求体
==================我是分割线====================
response向页面传递中文字符乱码问题:
1、在servlet中写的response.write写的数据全部都是iso8859-1编码,如果直接在页面解析,就需要看浏览器的解析格式,如果浏览器解码和tomcat编码一致,就可以正常解码,如果不一致就乱码
2、解决乱码可以response.setContentType("text/html,charset=utf-8"),将数据按照utf8编码,同时通知浏览器按照utf8解码。
3、也可以用response.setCharacterEncoding("utf-8"),此命令仅仅是指定数据按照utf8编码,不会限制浏览器解码方式,如果浏览器此时恰好是按照utf8解码,就不会有问题,但一般浏览器默认按照gbk解码 |
|