jsp中文显示乱码代码示例

原创 2007年09月12日 10:28:00
 
jsp中文显示乱码解决方案
大家在JSP的开发过程中,经常出现中文乱码的问题,可能一至困扰着您,我现在把我在JSP开发中遇到的中文乱码的问题及解决办法写出来供大家参考。
   一、JSP页面显示乱码
下面的显示页面(display.jsp)就出现乱码:
<html>
   <head>
   <title>JSP
的中文处理</title>
   <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
   </head>
   <body>
    <%
     out.print("JSP的中文处理");
    %>
   </body>
</html>

对不同的WEB服务器和不同的JDK版本,处理结果就不一样。原因:服务器使用的编码方式不同和浏览器对不同的字符显示结果不同而导致的。解决办法:在JSP页面中指定编码方式(gb2312),即在页面的第一行加上:<%@ page contentType="text/html; charset=gb2312"%>,就可以消除乱码了。完整页面如下:
<%@ page contentType="text/html; charset=gb2312"%>
<html>
   <head>
    <title>JSP
的中文处理</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
   </head>
   <body>
    <%
     out.print("JSP的中文处理");
    %>
</body>
</html>
二、表单提交中文时出现乱码
下面是一个提交页面(submit.jsp),代码如下:
<html>
   <head>
    <title>JSP的中文处理</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
   </head>
   <body>
    <form name="form1" method="post" action="process.jsp">
     <div align="center">
      <input type="text" name="name">
      <input type="submit" name="Submit" value="Submit">
     </div>
    </form>
   </body>
</html>
下面是处理页面(process.jsp)代码:
<%@ page contentType="text/html; charset=gb2312"%>
<html>
   <head>
    <title>JSP的中文处理</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
   </head>
   <body>
    <%=request.getParameter("name")%>
   </body>
</html>
如果submit.jsp提交英文字符能正确显示,如果提交中文时就会出现乱码。原因:浏览器默认使用UTF-8编码方式来发送请求,而UTF-8和GB2312编码方式表示字符时不一样,这样就出现了不能识别字符。解决办法:通过request.setCharacterEncoding("gb2312")对请求进行统一编码,就实现了中文的正常显示。修改后的process.jsp代码如下:
<%@ page contentType="text/html; charset=gb2312"%>
<%
request.setCharacterEncoding("gb2312");
%>
<html>
   <head>
    <title>JSP的中文处理</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
   </head>
   <body>
    <%=request.getParameter("name")%>
   </body>
</html>
中文作为参数传递乱码
当我们把一段中文字符作为参数传递个另一页面时,也会出现乱码情况,解决方法如下:
在参数传递时对参数编码,比如
RearshRes.jsp?keywords=" + java.net.URLEncoder.encode(keywords)
然后在接收参数页面使用如下语句接收
keywords=new String(request.getParameter("keywords").getBytes("8859_1"));
 
三、数据库连接出现乱码
只要涉及中文的地方全部是乱码,解决办法:在数据库的数据库URL中加上useUnicode=true&characterEncoding=GBK 就OK了。
这种乱码会使你插入数据库的中文变成乱码,或者读出显示时也是乱码,解决方法如下:
  在数据库连接字符串中加入编码字符集
  String Url="jdbc:mysql://localhost/digitgulf?
user=root&password=root&useUnicode=true&characterEncoding=GB2312";
  并在页面中使用如下代码:
  response.setContentType("text/html;charset=gb2312");
  request.setCharacterEncoding("gb2312");
 
四、数据库的显示乱码
mysql4.1.0中,varchar类型,text类型就会出现中文乱码,对于varchar类型把它设为binary属性就可以解决中文问题,对于text类型就要用一个编码转换类来处理,实现如下:
public class Convert
{
/** 把ISO-8859-1码转换成GB2312*/
public static String ISOtoGB(String iso)
{
   String gb;
   try
   {
    if(iso.equals("") || iso == null)
    {
     return "";
    }
    else
    {
     iso = iso.trim();
     gb = new String(iso.getBytes("ISO-8859-1"),"GB2312");
     return gb;
    }
   }
   catch(Exception e)
   {
    System.err.print("编码转换错误:"+e.getMessage());
  return "";
   }
}
}
把它编译成class,就可以调用Convert类的静态方法ISOtoGB()来转换编码。
总结:
1.   在jsp中<%@ page contentType="text/html; charset=A"%>如果指定了,那么在改jsp中所有构造的String(不是引用),如果沒有指定编码,那么这些String的编码是A的。从request的得到的String如果沒有指定request的编码的话,他是iso-8859-1的从别的地方得到的String是使用原來初始的编码的,比如从数据库得到String,如果数据库的编码是B,那么该String的编码是B而不是A的,也不是系统默认的。此时,如果要输出的String的编码不是A,那么,很可能显示乱码的,所以首先要将String正確转化为编码A的String,然后输出。
2.   在jsp中<%@ page contentType="text/html; charset=A" %>沒有指定,那么相当于指定了<%@page contentType="text/html; charset=ISO-8859-1" %>
3 Servelte中如果执行了像 response.setContentType("text/html;charset=A");説明将response的字符输出流编码设置为A,所有要输出的String的编码要转化为A的,否則会得到乱码的。Servelet中从request得到的String的编码和jsp中一样的,但是在servletjava文件中构造的String是使用的系统默认的编码的。在servelt中从外部得到的String是使用原来的编码的,比如从编码为B的数据库得到的数据是编码为B的,不是A,也不是系统默认的编码。

 
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

jsp中文显示乱码解决方案

原文地址:http://www.blogjava.net/yaya/archive/2008/10/05/232513.html 一、JSP页面显示乱码 二、表单提交中文时出现乱码 三、数据库连...

JSP页面出现的中文乱码显示问题

今天在JSP编码的时候中文出现了乱码,所以想深入搞懂,就开始在网上和书本查资料,稍微整理了下,以便以后再次遇到可以查看,有些东西还是记下来比较好。 在JSP中第一行代码为   其中首先区分下chars...

jsp中文显示乱码解决方案大全(转载)

一、JSP页面显示乱码 二、表单提交中文时出现乱码 三、数据库连接 大家在JSP的开发过程中,经常出现中文乱码的问题,可能一至困扰着您,我现在把我在JSP开发中遇到 的中文乱码...
  • y3wegy
  • y3wegy
  • 2012-04-24 13:08
  • 1503

JSP 中文显示乱码解决方案

一、JSP页面显示乱码 二、表单提交中文时出现乱码 三、数据库连接 大家在JSP的开发过程中,经常出现中文乱码的问题,可能一至困扰着您,我现在把JSP开发中遇到的中文乱码的问题及解决办法总结出来...

Java Web开jsp显示中文乱码处理

Java Web中文乱码解决方案 中文乱码分类 Jsp页面中编辑的中文乱码 Jsp页面接收请求中文乱码 表单方式get 表单方式get post方式 Jsp页面显...

struct+hibernate框架,jsp提交到后台,存到数据库里中文显示乱码问题。

1.在web.xml文件里添加如下代码:        Set Character Encoding        co...

遇到jsp中文显示乱码的解决方案

前言 正文 总结

jsp中文显示乱码解决方案

一、JSP页面显示乱码 二、表单提交中文时出现乱码 三、数据库连接 大家在JSP的开发过程中,经常出现中文乱码的问题,可能一至困扰着您,我现在把我在JSP开发中遇到的中文乱码的问题及解决办法写出来供...

转 jsp中文显示乱码解决方案

一、JSP页面显示乱码 二、表单提交中文时出现乱码 三、数据库连接 大家在JSP的开发过程中,经常出现中文乱码的问题,可能一至困扰着您,我现在把我在JSP开发中遇到的中文乱码的问题及解决办法...

JSP中文显示乱码解决方案

一、JSP页面显示乱码 二、表单提交中文时出现乱码 三、数据库连接 大家在JSP的开发过程中,经常出现中文乱码的问题,可能一至困扰着您,我现在把我在JSP开发中遇到的中文乱码的问题及解决办法写出来供...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)