![[861]ScalersTalk成长会Java小组第8周学习笔记](https://www.lukuai.com/wp-content/themes/onenav/assets/images/t.png)
Scalers点评:这是成长会Java小组第8周学习笔记,Java小组是成长会内部专研Java的小组,目前仅面向成长会成员开放。
往期日志:
JSP Servlet中文乱码处理
JSP,Servlet开发中常会遇到乱码,主要有以下几个地方可以设置编码,pageEncoding=”UTF-8”、 contentType=”text/html;charset=UTF-8”、
request.setCharacterEncoding(“UTF- 8”)和
response.setCharacterEncoding(“UTF-8”)。究竟要使用哪个才能起用?
分析一下:
一、数据提交的方式:
1、表单POST方法提交
2、表单GET方法提交
3、超链接 <a href=“myServlet?id=1&name=yong”>转入
4、在URL地址栏中直接输入
其中2、3、4都属于GET方式提交,特点明显:在URL地址栏或状态栏中看得到提交的参数值、参数值。
二、服务器端获取数据:
在JSP、Servlet中都是:
用request.getParameter(“param”)来获取。
如果提交的是数组,用
request.getParameterValues(“params”)来获取。
注意:此时在页面中不能用EL表达$name由于EL表达式$name是取出某一作用域范围中名称为name的变量。(依序从Page、Request、Session、Application范围查找)
三、乱码处理:
1、
request.setCharacterEncoding:是设置从request中取得的值。指定后可以通过getParameter则直接获得正确的字符串,如果不指定,则默认使用iso8859-1编码。
值得注意的是在执行setCharacterEncoding之前,不能执行任何getParameter。
而且,该指定只对POST方法有效,对GET方法无效。
对于GET方法提交表单是,提交的内容在URL中,一开始就已经按照编码分析提交内容,setCharacterEncoding自然就无效。GET方法是iso8859-1方式编码提交的。
2、GET方法提交乱码处理:
(1)强制转码:new String(str.getBytes(“iso-8859-1”),”UTF-8”));
以iso8859编码方式获取字节数组,再以utf-8方式进行编码。
(2)TOMCAT配置文件server.xml修改,增加URIEncoding=”utf-8”
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="utf-8"/>
这个修改也只对GET方法提交数据起作用。
四、response.setContentType
-
response.setContentType指定 HTTP 响应的编码,同时指定了浏览器显示的编码。
-
response.setCharacterEncoding设置HTTP 响应的编码,如果之前使用response.setContentType设置了编码格式,则使用
response.setCharacterEncoding指定的编码格式覆盖之前的设置. -
与response.setContentType一样的是,调用此方法,必须在getWriter执行之前或者response被提交之前。
(监听器处理乱码另文再述,本文不涉及由数据库引起的乱码。)
ScalersTalkID:scalerstalk
本微信公众号作者Scalers,游走在口译世界的IT从业者。微信公众号ScalersTalk,微博@Scalers,网站ScalersTalk.com,口译100小时训练计划群C 456036104
成长会是由Scalers发起的面向成长、实践行动,且凝聚了来自全球各地各行各业从业者的社群。有意入会者请和Scalers直接联系,我和其他会员会和你直接交流关于成长行动等各方面的经验教训。2016年成长会持续招募中,参见做能说会写的持续行动者:ScalersTalk成长会2016年会员计划介绍(2016.3更新)
![[861]ScalersTalk成长会Java小组第8周学习笔记](https://img.dunling.com/blogimg/20260112/4321c7caeaaa41be80ce928970785c3a.jpg)




