继上次mysql遭遇汉字编码问题之后,昨晚再次止步于汉字编码,这次问题出在request的getParameter()方法上,getParameter等方法默认采用ISO8859-1字符集编码进行URL解码,于是当前台jsp界面通过post或者get方式传回汉字编码时,总是乱码,于是要进行转型:
//getParameter等方法默认采用ISO8859-1字符集编码进行URL解码
String name = request.getParameter("name");
try {
name = new String(name.getBytes("ISO-8859-1"), "utf-8");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}// 字符转换
于是第一编码问题解决,第二个问题在于要在jsp界面上显示post/get的参数汉字,可是jsp EL默认的也不是utf-8,那么jsp上怎么去修改编码呢,首先尝试了:
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="utf-8"%>
<%
response.setCharacterEncoding("utf-8");
request.setCharacterEncoding("utf-8");
%>
未果,依旧乱码,于是尝试直接去调用页面调转前的servlet中已经编码好的字符,未果,el的常见四种方式似乎都不能调用,有待深究,似乎要得到字符参数的唯一办法是${param.name},可百度谷歌无解决el编码的问题,于是采用原始点的方法,半尝试半摸索的搞定编码问题
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="utf-8"%>
<html>
<body>
<h1>注册成功</h1>
<!-- param表示从客户端取值 -->
姓名: <%=new String(request.getParameter("name").getBytes("ISO-8859-1"), "utf-8")%> <br>
年龄:${param.age}
</body>
</html>
<%= %>中就是解决问题的关键 ,挨踢民工果真很伤神很伤神啊