jsp乱码问题

jsp乱码问题,求助

下了个几年前的jsp源码,我装上后一直有中文乱码问题,数据库我用mysql

 

并用sql-front操作,在用sql-front的时候已把字符设置为gb2312

 

而且在sql-front中能正确显示中文,但就是在jsp页面上用getstring方法

 

得到乱码,我也用过getbytesiso-8859-1)等方法试过还是没有用。

 

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" %>

<%@ page pageEncoding="gb2312" %>

这两条语句在jsp页面也都写了

 

求高人相助

提问者 43385607 - 三级

最佳答案

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 "";

 0

回答者:匿名 2008-9-11 02:19

我来评论>>

 

一、输出中文

 

1 JSP页面头部加上语句:<%@page contentType="text/html;charset=utf-8"%>

 

2 Sevlet中:response.setContentType("text/html;charset=utf-8");

 

二、获取表单数据

 

可以在每次获取的时候使用:

 

str=request.getParameter("chStr");

 

str=new String(str.getBytes("ISO-8859-1"),"utf-8");

 

但是这种方式很繁琐,如果需要获取的中文比较多,就不太可行。可以考虑使用Filter

 

%TOMCAT%/webapps/servlets-examples/Web-INF/classes/filters目录下,有一个完整的例子,可以将SetCharacterEncodingFilter.class拷贝到自己应用中,并设置web.xml

 

<filter>

 

   <filter-name>Set Character Encoding</filter-name>

 

   <Filter-class>SetCharacterEncodingFilter</filter-class>

 

   <init-param>

 

        <param-name>encoding</param-name>

 

        <param-value>UTF-8</param-value>

 

</init-param>

 

</filter>

 

<filter-mapping>

 

      <filter-name>Set Character Encoding</filter-name>

 

     <url-pattern>/*</url-pattern>

 

</filter-mapping>

 

三、URL中的中文

 

Tomcat安装目录下的/conf/server.xml,找到Connector,添加URIEncoding="utf-8":

 

<Connector port="80" redirectPort="8443" minSpareThreads="25" connectionTimeout="20000" maxSpareThreads="75" maxThreads="150" URIEncoding="utf-8"/>

 

四、数据库中的中文

 

1 如果是自己建立的表,将表的编码方式设为utf8

 

2 连接字符串

 

aJDBC方式

 

jdbc://mysql://host:port/dbname?user=username&password=pwd&useUnicode=true&character Encoding=utf-8

 

b) 数据源方式

 

<parameter>

 

<name>url</name>

 

<value>

 

jdbc://mysql://host:port/dbname?useUnicode=true&character Encoding=utf-8

 

</value>

 

</parameter>

 

3) 已存在的ISO-8859-1编码方式的数据库

 

a)在JDBC连接字符串中设置useUnicode=true&character Encoding=ISO-8859-1可以顺利写入数据库

 

b)读取时只能依靠转换

 

public String charConvert(String srcStr){

 

String result=null;

 

if(srcStr!=null){

 

     try{

 

            result=new String(srcStr.getBytes("ISO-8859-1"),"utf-8");

 

        }catch(Exception e){

 

            result=null;

 

       }

 

}

 

retrun result;

 

}

回答者: №1兲使雙漁 - 四级   2008-8-24 18:17

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值