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://blog.csdn.net/lovesummerforever/article/details/12290319   乱码是让人头疼的一件事情,您是否和我一样也遇...
  • Marry1234789
  • Marry1234789
  • 2016年10月22日 21:32
  • 5301

JSP中用 javabean传递中文乱码的解决方法

前言又是在做JSP上机实验作业,学了好久的JSP基础教程,书上的例子看一遍很快就会了,但是,自己动手去敲代码又是另外一会事情。书上有些东西是错的,比如在解决中文乱码的问题时候,明明写的和书上的一模一样...
  • sinat_27714067
  • sinat_27714067
  • 2016年10月24日 23:02
  • 2080

java中文乱码解决之道(七)-----JSP页面编码过程

我们知道JSP页面是需要转换为servlet的,在转换过程中肯定是要进行编码的。在JSP转换为servlet过程中下面一段代码起到至关重要的作用。 在上面代码中有两个地方存在编码:pageEncodi...
  • chenssy
  • chenssy
  • 2015年01月21日 09:07
  • 4870

JSP验证码大全之验证码使用与乱码…

以上两篇文章的内容介绍了有关JSP中产生数字验证码跟中文验证码的源代码并做了分析,本文中介绍如何对以上产生的数字跟中文验证码进行使用,以及如何解决中文验证码的乱码无法正确验证的问题。    对验证码...
  • huazaichang
  • huazaichang
  • 2013年01月29日 13:48
  • 652

JSP页面表单提交时出现中文乱码的解决方法

shiyong
  • shenlan18446744
  • shenlan18446744
  • 2014年05月11日 08:29
  • 4624

JSP页面显示乱码,表单提交中出现乱码,数据库连接乱

JSP页面显示乱码,表单提交中出现乱码,数据库连接乱 一、JSP页面显示乱码 下面的显示页面(display.jsp)就出现乱码: JSP的中文处理 out.p...
  • senemmer
  • senemmer
  • 2016年04月10日 23:01
  • 835

jsp向数据库传递中文参数(变量)乱码问题的解决:

jsp向数据库传递中文参数乱码问题的解决:1,JSP页面中文显示乱码解决估计大家都知道怎么解决,但是我还是想说明一下: 1)、JSP编码格式选择: pageEncoding=”utf-8”这个页...
  • qq_22784397
  • qq_22784397
  • 2016年05月19日 10:09
  • 1296

关于web工程jsp@include 包含html和txt乱码问题的解决办法

前几天学JSP,发现当           会出现乱码的情况,但是  就不会出现乱码情况。 然后看了好多的博客修改了很多地方,将所有的文件都改为UTF-8,或者gbk、gb2312,然并卵。包括修改...
  • yangshuai6813
  • yangshuai6813
  • 2015年09月16日 23:42
  • 1055

解决JSP中文乱码问题

原文:http://www.cnblogs.com/chengkai/articles/2171848.html 大家在JSP的开发过程中,经常出现中文乱码的问题,可能一至困扰着大家,现把J...
  • luoweifu
  • luoweifu
  • 2014年03月25日 23:46
  • 4056

jsp:forward jsp:include传中文参数乱码问题的解决方法

jsp的forward指令用于将页面响应转发到另外的页面,可以转发到静态的HTML页面,也可以转发到动态的JSP页面,还可以转发到容器中的Servlet。在进行转发时,可以通过jsp:param指令增...
  • gnail_oug
  • gnail_oug
  • 2016年06月19日 00:09
  • 2130
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:jsp中文显示乱码代码示例
举报原因:
原因补充:

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