在Post方式中
//第一种:对于该方法全局有效
response.setContentType("text/html;charset=GBK");
response.setCharacterEncoding("GBK");
request.setCharacterEncoding("GBK");
//第二种:只对要转码的特定字符串有效
String name= request.getParameter("name");
String encodingString = new String(name.getBytes("ISO-8859-1"),"GBK");
System.out.println(encodingString);
//第三种:为该项目配置一个过滤器,对该项目全局有效
//过滤器请看CharacterEncodeingFilter类 和 web.xml里的配置
步骤:
1.编写CharacterEncodeingFilter类(详见例子)
2.在web.xml中配置该类的servlet信息和初始化信息
GET方式访问URL时参数的编解码工作:编码/传输/解码
基本过程:
public static void main(String args[]){
String tsptString=”中文”;
//1.编码(浏览器会按网页的编码方式进行编码)
String tempString=URLEncoder.encode(tsptString,”GBK”);
//2.传输
System.out.println(tempString);
//3.解码(由Tomcat容器按照默认编码方式自动解码)
String resultString=URLDecoder.decode(tempString,”ISO-8859-1”);
//查看
System.out.println(resultString);
}
上面的方式会因为编解码方式的不统一导致乱码,可以通过下面的方式来统一编码方式:
1.客户端指定网页编码
a) 页面指定GBK方式: submit.jsp教程 中 ,Servelet中Response.setContentType(“text/html; charset=GBK”);
b) 浏览器指定GBK方式:在页面上右击->编码->选择新编码->GBK(无法依靠用户为你的页面指定编码,但要预防用户通过这种方法改变你的编码方式
2.服务端改变编码
a) 改变Tomcat的默认编码方式:打开tomcat下的conf文件夹下的service.xml查找8080,添加 URIEncoding='GBK',如下: ,实例中此时第三步的默认编码方式就变成了GBK
b) 不使用TOMCAT的默认编码方式在服务器端处理参数,例如在Servlet中
protected void service(HttpServletRequest req, HttpServletResponse res)throws ServletException, IOException {
String param=arg0.getParameter("param");
//UTF-8为指定的页面编码方式,ISO-8859-1为TOMCAT的默认解码方式(URIEncoding)
param =new String(param.getBytes("ISO-8859-1"),"UTF-8");
System.out.println(param);
//...
}
######这篇文章总结的很好:
http://www.ibm.com/developerworks/cn/java/j-lo-chinesecoding/index.html######回复
@季_苗 : ibe的网址,加载慢而已######回复
@季_苗 : 额,为毛我可以打开######你好,这个页面打不开