日期:2014-05-17  浏览次数:20621 次

求助帖!关于JSP页面在一些浏览器上面显示是乱码的问题!
RT: 在测试已经做好的网站的时候,同事帮我返现了一个问题,在一些浏览器上(部分IE8,部分360,IE9) 整个网页有一小块的地方 中文显示是乱码,导致 数据查询不出来!困扰了几天了,求大神指导下。谢谢了!
附上主要代码
Java code
 
 servlet 端:

    request.setCharacterEncoding("utf-8");
         response.setCharacterEncoding("utf-8");

    String date = OneDate.getTime();
         String enddate=GetTime.getTime();
         int uid = Integer.parseInt(request.getParameter("01"));
         String uname = request.getParameter("02");

      USER user=new USER();
      把上面四个值传入 user对象;
      执行一个查询语句
      Result result1=fafd.searchAppUM(user);

...
     request.setAttribute("BDATE", onedate);  (因为a.jsp要用这两个参数,所以下面采用 forward跳转)
     request.setAttribute("EDATE", enddate);
     request.setAttribute("UNAME", uname);
     HttpSession session1 = request.getSession();
     session1.setAttribute("USERS", result1);
     request.getRequestDispatcher("a.jsp").forward(request, response);



a.jsp、
Java code


<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@page import="javax.servlet.jsp.jstl.sql.Result"%> 
。。。。
<table>
<tr>
<td><%=request.getAttribute("UNAME")%></td>
</tr>
</table>




在 a.jsp中 <td>显示的是乱码 但只是在一部分浏览器中。

------解决方案--------------------
是有的 server.xml 文件中URIEncoding="UTF-8" 也写了! 把这个去掉 这个有bug 把页面全部设置成utf-8 后台编码方式也全部设置成UTF-8这样不会有问题的 ,如果还有问题 检查以下浏览器的编码方式。再不行 就直接new String ("str".getBytes("iso-8859-1"),"utf-8");


response.setCharEncoding("utf-8");
实在不可以这样写
在上面 写
<%

String UNAME = (String )request.getAttribute("UNAME");

UNAME = new String (UNAME .getBytes("iso-8859-1"),"utf-8");


%>


<td><%=UNAME %></td>

------解决方案--------------------
用get方式传中文最好用java.net.URLEncoder转一下
------解决方案--------------------
给你个例子吧,你试试看把,我是这么解决乱码的。
function onSubmit(){
//简单验证数据
var file = document.getElementById("file").value;
//拼接请求的字符串
var url = "Logic.jsp";
url+="?file=" + file;
url=encodeURI(url); 
url=encodeURI(url); 
var form = document.mainform.action=url;
return true;
}

servlet 里面 处理。
System.out.println(URLDecoder.decode(request.getParameter("file"),"UTF-8"));