jsp如果使用 url传中文参数的话,在获得url中文参数时,很容易出现乱码问题。
解决乱码的最终方案虽然很简单,但却花了我比较长的时间,现分享出来,希望能对大家有用。
首先,需要保证tomcat的配置文件server.xml的正确性。
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20062"
redirectPort="8443" URIEncoding="UTF-8" />
注意:这里所有的Connector标签,都需要增加了URIEncoding="UTF-8。 并且在增加了这个值之后,不能再增添:useBodyEncodingForURI="true" 值,否则也会出错。
其次,对URL参数编码,也有相同编码(utf-8)的要求。
a.jsp中:
使用了java.net.URLEncoder.encode(str,"utf-8") 对中文参数进行utf-8编码。防止浏览器以自己的方式编码,造成解码的麻烦!
例如: <a href='b.jsp?title=<%=java.net.URLEncoder.encode(stitle,"utf-8")%> target=_blank>提交主题信息</a>
b.jsp中:
首行使用:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
那么在jsp中的java代码块,获取参数,无须再进行任何转码:
例如: String title = request.getParameter("title");