JSP 中文传参问题

来源:互联网 发布:java单例模式和同步 编辑:程序博客网 时间:2024/05/20 13:09
 在JSP接收URL传过来的参数时,总是拿到乱码,查看了网上很多的方法均无解。  试过 title=new String(request.getParameter("title").getBytes("ISO-8859-1"),"utf-8");  本地测试title=new String(request.getParameter("title").getBytes("ISO-8859-1"),"gb2312");//本地正常//服务器乱码  研究一下午最终发现竟然是拦截器把接收参数先做了一次编码转化,转化成了UTF-8。   解决方案:    在头部重新定一下接收参数的编码    request.setCharacterEncoding("gb2312");   问题解决    需注意的是所有编码均需要统一      <%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>         由于中文字符在URL参数里面先被解析成了gb2312    如:   http://service.weibo.com/share/share.php?title=%E7%BA%B5%E8%A7%88%E6%B1%BD%E8%BD%A6%E8%A1%8C%E4%B8%9A%E6%9C%80%E6%96%B0%E8%B5%84%E8%AE%AF%EF%BC%8C%E9%A2%86%E7%95%A5%E5%A5%A5%E8%BF%AA%E7%A7%91%E6%8A%80%E9%AD%85%E5%8A%9B%E3    如果不设置成gb2312接收,直接接收必然会被转成UTF-8    所以设置    request.setCharacterEncoding("gb2312");   String title=request.getParameter("title")!=null?request.getParameter("title").trim():"";   此时title内容拿到的中文正常    还有一点需要注意的是:    现在在IE6以上版本URL要求比较严格    ? 不能出现多次,得用gb2312转码后的字符代替%3F    其它特殊字符最后先都转一下码,不然有可能打不开网页。  
原创粉丝点击