java web中的中文乱码
一、Form表单向servlet提交中文信息时出现乱码问题的解决方法
Tomcat5.0后开始需要对post和get提交方式进行单独处理
(1)Form表单提交的方式为Post,在servlet中添加以下语句
request.setCharaterEncoding(“GBK”) //此request是doXX中的参数。
(2)Form表单提交的方式为Get, 更改tomcat的server.xml文件,此时必须重启tomcat服务器
<Connectorport="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
改为:
<Connectorport="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"URLEncoding=“GBK”/>
二、servlet向客户端返回中文信息时出现乱码问题的解决方法
在servlet中添加以下语句:
response.setContentType(“text/html;charset=GBK”);
它的效果等价于:
response.setContentType(“text/html”);
response.setCharaterEncoding(“GBK”);
三、向jsp页面提交中文信息时出现乱码问题的解决方法
(1)当html文件或者jsp文件中以Form表单向jsp页面传递参数时:
Form表单以get方式提交时,在提交到的页面中加上:
使用page指令<%@page contentType=“text/html;charset=gbk”%>
Form表单以post方式提交时,在提交到的页面中加上:
使用request.setCharacterEncoding(“GBK”) 此request是内置对象。
一般情况下两种都要写上,以兼顾get和post方法。不管表单在html文件还是jsp文件中都适用。
(2)当jsp页面中用动态包含<jsp:include page=“”/>向jsp页面传参时
不仅需要在被包含的页面中添加
<%@page contentType=“text/html;charset=gbk”%>
request.setCharacterEncoding(“GBK”),
而且如果直接在page属性里传递参数,包含的页面上需要添加
<%@page contentType=“text/html;charset=gbk”%>
如果通过<jsp:param name=“”value=“”/>传参,包含的页面还需要添加另外一个语句:
request.setCharacterEncoding(“GBK”)。
(3)当jsp页面中用response.sendRedirect()跳转向jsp页面传参。
与(1)的情况相似。
(4)当jsp页面中用<jsp:forward page=“”/>跳转时向jsp页面传参时。
与(2)的情况相似。