过滤器里是这么写的:
PrintWriter out = response.getWriter();
HttpSession session = ((HttpServletRequest)request).getSession();if ( (String)session.getAttribute("cellphoneName")==null ){
out.print(" <script language='javascript' charset='gb2312'>window.alert('您尚未选择手机');history.go(-1); </script>");
}

chain.doFilter(request, response);
==============================================
web.xml里面是这么也得
<filter>
    <filter-name>cellphoneNameExist</filter-name>
    <filter-class>filter.CellphoneNameExist</filter-class>
</filter>
<filter-mapping>
    <filter-name>cellphoneNameExist</filter-name>
    <url-pattern>/cellphoneBuy.jsp</url-pattern>
</filter-mapping>
===============================================
页面访问经过过滤器后,弹出警告时:你尚未选择手机 是乱码。页面上我也用了
request.setCharacterEncoding("gb2312");
response.setCharacterEncoding("gb2312");小弟课程项目要交了,实在不知道怎么解决
求哪位高人帮忙。。小弟感激不尽

解决方案 »

  1.   

    将window.alert('您尚未选择手机')
    换成unicode编码
    window.alert('\u60a8\u5c1a\u672a\u9009\u62e9\u624b\u673a')
      

  2.   

    你加上这个response.setContentType("text/json; charset=gb2312)"); 试试!
      

  3.   

    浏览器自动选择编码
    在别的机子上test下
      

  4.   

    可能是你的项目与发布项目的容器之间字符集不同引起的,如果是在Tomcat中可以在Apache Tomcat 6.0.18\conf下的server.xml中该成下面的代码试试
                    <Connector port="8080" protocol="HTTP/1.1" 
                   connectionTimeout="20000" 
                   redirectPort="8443" URIEncoding="GBK"/>
      

  5.   


    out.println("<script type='text/javascript'>");
    out.print("alert(decodeURIComponent(\"" + java.net.URLEncoder.encode("您尚未选择手机", "UTF-8").replace("+","%20") + "\"));");
    out.println("history.go(-1);");
    out.println("</script>");
    或者out.println("<script type='text/javascript'>");
    out.println("alert('\\u60a8\\u5c1a\\u672a\\u9009\\u62e9\\u624b\\u673a');");
    out.println("history.go(-1);");
    out.println("</script>")