当前位置: 代码迷 >> Java Web开发 >> jsp 页面的奇怪乱码!
  详细解决方案

jsp 页面的奇怪乱码!

热度:97   发布时间:2009-09-30 08:42:10.0
jsp 页面的奇怪乱码!
1我用的是 SQL server 2005 + tomcat + struts
2所有的.jsp .do 请求都有过滤器 实行统一的 UTF-8 编码。public void doFilter(ServletRequest request, ServletResponse response,
                                                      FilterChain filterChain) throws IOException, ServletException {
                                                             request.setCharacterEncoding("UTF-8");
                                                             response.setCharacterEncoding("UTF-8");        
                                                             filterChain.doFilter(request, response);
                                                            }
3在页面用EL表达式输出
4页面里<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>也为UTF-8
5查询输出部分得到的全是乱码,非查询出来的中文显示正常
6多次试验发现 在需要查询的字段前加上一个英文字母 或数字页面中文显示正常,如要查询的字段为: “你好” 改为 “a你好” 或“1你好”。
7
搜索更多相关主题的帖子: 页面  乱码  jsp  

----------------解决方案--------------------------------------------------------
改为GBK
----------------解决方案--------------------------------------------------------
GB2312
----------------解决方案--------------------------------------------------------
顶!我也是同样的问题?
----------------解决方案--------------------------------------------------------
不对 改为GB2312 GBK 同样解决不了问题, 而且项目中所有页面统一风格都是UTF-8编码!改了也不好的。谁还有高见?
----------------解决方案--------------------------------------------------------
在代码开头添加一个文件如:<%@ include file="format.jsp"%>

format.jsp代码如下
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>
<body>
<%!
public String Bytes(String str)
{
try
{
String str_1=str;
byte[] str_2=str_1.getBytes("ISO8859-1");
String bytes=new String(str_2);
return bytes;
}
catch(Exception e)
{
System.out.println("中文乱码解决问题出错"+e.getMessage());
}
return "null";
}
%>
</body>
</html>
----------------解决方案--------------------------------------------------------
你的意思我没明白
  
    1 public String Bytes(String str)  意思是让页面加载时执行吗? str 是拿什么字符传进去?
   
    2 要是你的意思是每当要输出一个中文时用这个来转换编码?那样岂不是很麻烦?
----------------解决方案--------------------------------------------------------
如果你是从后台得到乱码的值,那你就看看你传值的方式,有些方式会出现乱码,换种传值方式
----------------解决方案--------------------------------------------------------
以下是引用我很幽默在2009-10-15 08:56:51的发言:

你的意思我没明白
  
    1 public String Bytes(String str)  意思是让页面加载时执行吗? str 是拿什么字符传进去?
   
    2 要是你的意思是每当要输出一个中文时用这个来转换编码?那样岂不是很麻烦?

不是的,只要在文件中包含这个文件就行了,比如说你的文件是index.jsp,只要在index.jsp的开头添加
<%@ include file="format.jsp"%>。当然,要在把format.jsp放在包含index.jsp的 文件夹下

传递的时候是很容易的,包含Bytes就行了,如要获取某个字段:str=Bytes(request.getParameter("str1"));

这只是获取字段的方法,其他类型的乱码乱码问题也可以解决的
----------------解决方案--------------------------------------------------------
你的应该是数据库方面的问题吧 把数据库的类型改成UTF-8就可以了
还是不要用GBK,用UTF-8比较好
----------------解决方案--------------------------------------------------------
  相关解决方案