面对jsp的scriptlet编程日子似乎已经远离我有一段时间了,我清晰地记得那是对于jsp编程中的乱码问题折腾得我好不容易找到了一个极其完美的解决方案,我称他为“3声明2设置1配置”。具体如下:
3声明:JSP根据红色部分配置
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
</body>
</html>
2设置:在对应的请求页面和响应页面中设置
请求页面<% response.setCharacterEncoding("UTF-8"); %>
响应页面<% request.setCharacterEncoding("UTF-8"); %>
1配置:在tomcat安装目录下的conf目录下的server.xml文件中对应加入一下配置段
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" />
但是莫名了,昨天同学问我一个简单的response.sendRedirect(url + "?msg=中文")这个导致响应页面出现乱码,我感到十分疑惑(她是按照我给的完美解决方案做的)。自己打开阔别已久的文本编辑器,设置文本编码为UTF-8,储存格式编码也为UTF-8,根据“321”原则测试了一遍。考!人品问题还是什么的,竟然乱码了~抓挠啊~~~抓狂啊~~~
于是想起了 java.net 包中的URL的UTF字符转码辅助类!把那个中文字符串转换成UTF-8的 %af%23 这种类型的地址字符串,再通过响应页的request的getParameter方法取出即可……奇怪是我的最大感觉,过去为什么就可以呢?这个疑问在此留下


