编写过JSP页面的朋友大概对于中文乱码问题已经是司空见惯了,网上对于这方面问题的解决办法也很多,在此我就不多赘述了。
但是最近我遇到了一个问题,就是我编写过的页面,有时候会显示繁体字;而这个是通常的GB2312和GBK编码方式所不能识别的,现在在页上的显示为?。
解决办法:
将该页面的字符编码方式转换为UTF-8。但这样又会涉及到前后页面互相传参的问题,有时候会出现乱码。在此我列出我遇到过的几种情况供大家参考:
1、页面的编码方式设为UTF-8.
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
2、在接收前面页面传过来的参数时,如果前面页面的编码为GB2312或GBK,那么接收表单数据时:
request.setCharacterEncoding("GB2312");
String nowcount=request.getParameter("nowcount");
如果前面的页面编码为UTF-8,那么:
request.setCharacterEncoding("utf-8");
String nowcount=request.getParameter("nowcount");
如果是通过URL传参数:
request.setCharacterEncoding("utf-8");
String city=request.getParameter("city");
city= new String(city.getBytes("iso8859_1"),"utf-8");
3、经过上面的转换,解决了问题的一大半,但还是遇到了新困难:
如果在URL里面有两个参数:
例:./index.jsp?city=北京市&type=B类
那么在接收参数时,只能接收到city,city的值是"北京市&type=B类",其中"&"符号周围可能存在乱码,不能识别多个参数。最后我只能是将参数合在一起传过来,接收到了以后再split。解决了页面的显示问题。
如果哪位朋友有这方面经验也希望能写出来与大家分享。