当通过JDBC或者是DataSource数据源(最终也是通过JDBC),从数据库中取出数据,
该数据的字符编码有可能和Web应用网页使用的编码不一致,如果不进行相关的处理,会
导致在网页上出现乱码。例如:
<%@ page contentType="text/html; charset=gb2312" language="java"%>
不同的数据库的JDBC驱动程序采用的默认编码有所不同,例如MySql数据库采用的
是ISO-8859-1编码,Oracle在安装的时候你可以选择它的编码,Ms Sql Server数据库采用
的是操作系统默认的字符编码。为了从数据库中读取数据并正确的显示在网页上,我们可以
采取以下几种办法:
方法一:在设定连接数据库的URL时,指定字符编码。
例如针对MySql的连接URL我们可以写成:
jdbc:mysql://localhost:3306/yourDB?useUnicode=true&characterEnconding=GB2312
采用这种方式从数据库取出的数据,使用的字符编码为指定的GB2312编码方式,这样
创智和宇信息系统有限公司 因和宇而腾达 因创智而辉煌
- 156 -
它就可以直接显示在网页上。注意:对于不同的数据库,数据库的URL中字符编码的设置
形式可能不一致。
方法二:如果在设定数据库的URL时,没有设定字符编码,则首先应该知道JDBC驱
动程序使用的默认字符编码,然后对从数据库中取出的数据进行字符编码转换。
例如:
String name = rs.getString(1);
String password = rs.getString(2);
int age = rs.getInt(3);
name = new Bytes(”ISO-8859-1”),”GB2312”);
password = new Bytes(”ISO-8859-1”),”GB2312”);
方法三:使用过虑器优美的解决中文字符编码的问题。
前提条件,每个页面使用
<%@ page contentType="text/html; charset=GB2312" language="java"
import="java.sql.*" errorPage="" %>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312">
步骤 1:添加过滤器
在 TOMCAT 中 到 这 2 个 文 件 RequestDumperFilter.java ,
SetCharacterEncodingFilter.java ,他们位于
D:\Tomcat5.0.28\webapps\jsp-examples\WEB-INF\classes\filters,加到你的工程文件里
去,编译他们。
步骤 2:配置 WEB.XML
在 l 里加入这一段
……
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GB2312</param-value>
</init-param>
param name
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
……
步骤 3:修改 l
在 l 修改 2 个地方
<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" URIEncoding='GBK'/
>
<Connector className="at5.CoyoteConnector"
port="8009" minProcessors="5" maxProcessors="75"
enableLookups="true" redirectPort="8443"
acceptCount="10" debug="0" connectionTimeout="0"
useURIValidationHack="false" protocol="AJP/1.3"
protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"
URIEncoding='GB2312'/>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论