刚接触jsp,编码问题确实是最令人头疼的。要想实现中文的无乱码,需要在每个页面中添加使用同一种编码形式。
例如:对于一张jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
同时在Servlet实现doGet()和doPost()方法时,需要明确的是使用
request.setCharacterEncoding("UTF-8");
只对Post方法中的内容进行相应的编码,而对Get中内容无用。有一个比较通用的方法解决doGet中的乱码问题:
private String _convert(String str) {
try {
//Tomcat中默认编码为ISO08859-1,所以此处_convert函数中进行一次编码转换
return new String(str.getBytes("ISO8859-1"), "UTF-8");
} catch (Exception e) {
return str;
}
}
protected void doGet(...) {
//...
String str=request.getAttribute("value");
str=_convert(str);
//...
}