各种乱码的情况
1.项目的编码格式和页面文件的编码格式不一样是否有冲突?
webProject项目的编码格式是“GBK” ,项目下的页面中的编码格式是“UTF-8”,实践发现,项目的编码格式和页面的编码格式不一样不会有任何问题,显示的中文没有乱码。
查看项目的编码格式可以在 项目-->右键-->Properties--> Text file encoding 框内显示的具体值就是项目编码格式。
查看页面文件的编码格式可以在 页面-->右键-->Properties--> Text file encoding 框内显示的具体值就是页面文件的编码格式。
2.页面的文件编码格式和页面内容的编码格式不一样是否有冲突?
在jsp中如果要显示正确的内容,并且保证其显示不乱码,必须要指定contentType 或者 pageEncoding 的属性与文件编码格式一致。并且如果他们都存在,那么pageEncoding必须与文件编码格式一致,contentType必须是中文编码格式才行。
3.通过URL传递中文参数的时候接收的乱码怎么解决?
<span style="background-color: rgb(204, 204, 204);"><span style="color:#9999FF;">http://localhost:8080/webProject/servlet/encodeServlet?param=中文</span> </span> request.setCharacterEncoding("UTF-8"); String param = request.getParameter("param"); param = new String(param.getBytes("iso-8859-1"),"UTF-8");
4.使用js函数编码之后,然后后台解码
var param = encodeURI(encodeURI("中文")); //这里编码必须调用两次,因为传递后台后java程序会解码一次,然后自己还要解码一次, location.href="<%=request.getContextPath()%>/servlet/encodeServlet?param="+param;
//request.setCharacterEncoding("UTF-8"); //response.setContentType("text/html;charset=UTF-8"); String param = request.getParameter("param"); //param = new String(param.getBytes("iso-8859-1"),"UTF-8");//这个用于直接处理转换get请求的编码 //param = URLEncoder.encode(param);//这个是用于编码的方法 param = URLDecoder.decode(param);//这个是用于解码的方法
5.利用PrintWriter输出的时候 出现乱码了
<span style="font-family:SimSun;">response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); out.print("接收的参数是:"+param); out.close(); </span>