您的位置:首页 > 编程语言 > Java开发

关于UTF-8, GB2312 JBoss,JSP,EJB,MySQL,STRUTS的中文解决方案

2012-05-28 19:43 393 查看



如果MySQL,J2EE平台的中文处理出现问题,则请从以下几方面考虑:

A、数据库配置文件my.ini

[mysqld]

default-characterset=utf8



character-set-server=utf8

B、mysql-ds.xml,以下为部分相关内容

<?xml version='1.0' encoding='UTF-8'?>

<datasources>

<local-tx-datasource>

<jndi-name>MySqlDS</jndi-name>

<connection-url>

jdbc:mysql://localhost:3306/uplatform

</connection-url>

<connection-propertyname='characterEncoding'>utf8</connection-property>

<driver-class>com.mysql.jdbc.Driver</driver-class>

<user-name>kzz</user-name>

<password>118200</password>

... ... ...

</datasources>

C、数据库建表请用utf8为字符集

D、JSP请用UTF-8或GB2312为编码方式

E、Java的编码方式请用UTF-8或GB2312

F、如果使用STRUTS架构,请加载一个Filter,完成UTF-8或GB2312的转换。

G、tomcat的server.xml中的

打开tomcat的server.xml文件,找到区块,加入如下一行:

完整的应如下:

<Connectorport='8080'

maxThreads='150'

minSpareThreads='25'

maxSpareThreads='75'

enableLookups='false'

redirectPort='8443'

acceptCount='100'

debug='0'

connectionTimeout='20000'

disableUploadTimeout='true'

URIEncoding='UTF-8'/>

H:建议j2ee项目(STRUTS架构)的中文解决:

所有jsp文件<%@ page language="java"pageEncoding="GB2312"%>

以(下源码I)中的过滤器采用GB2312

所有xml文件<?xml version="1.0"encoding="UTF-8"?>

打开tomcat的server.xml文件,找到区块,加入如下一行:URIEncoding='UTF-8',具体见G中描述

I:过滤器源码:

过滤器源码(java)

package zzsy.news.util;

import java.io.IOException;

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

public class CharacterEncodingFilterimplements Filter {

privateString encoding="";

publicvoid init(FilterConfig args0) throws ServletException {

//得到配置文件中设置的初始值

this.encoding=args0.getInitParameter("encoding");

}

publicvoid doFilter(ServletRequest agrs0, ServletResponse args1,

FilterChainarg2) throws IOException, ServletException {

//强制转换请求、响应对象的类型

HttpServletRequestreq=(HttpServletRequest)agrs0;

HttpServletResponseres=(HttpServletResponse)args1;

//设置请求响应对象中的字符编码

res.setCharacterEncoding("gbk");

req.setCharacterEncoding("gbk");

// System.out.println("通过字符过滤器");

//跳出过滤器,继续执行请求响应

arg2.doFilter(req,res);

}

publicvoid destroy() {

//TODO Auto-generated method stub

}

}

过滤器源码(配置)

<filter>

<filter-name>CharacterEncodingFilter</filter-name>

<filter-class>zzsy.news.util.CharacterEncodingFilter</filter-class>

<init-param>

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

<param-value>GBK</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>CharacterEncodingFilter</filter-name>

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

</filter-mapping>

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: