过滤器源代码如下:
package org.ly.filter;
/**
* unification character -->utf-8
*/
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;public class Character implements Filter { private String ccode;
public void destroy() { } public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
req.setCharacterEncoding(ccode);
chain.doFilter(req,res);
} public void init(FilterConfig config) throws ServletException {
ccode = config.getInitParameter("ccode");
}}
xml配置文件如下:
<?xml version="1.0" encoding="utf-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <!-- 配置过滤器 encode 用于过滤字符 -->
<filter>
<filter-name>encode</filter-name>
<filter-class>org.ly.filter.Character</filter-class>
<init-param>
<param-name>ccode</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encode</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
说明:mysql创建数据库时好像用的是utf8字符集,表和记录用的都是utf8。在留言板输入中文后,网页显示出来的都是问号???????????????。大侠快帮帮忙解决,我被搞了整整两天了。
package org.ly.filter;
/**
* unification character -->utf-8
*/
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;public class Character implements Filter { private String ccode;
public void destroy() { } public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
req.setCharacterEncoding(ccode);
chain.doFilter(req,res);
} public void init(FilterConfig config) throws ServletException {
ccode = config.getInitParameter("ccode");
}}
xml配置文件如下:
<?xml version="1.0" encoding="utf-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <!-- 配置过滤器 encode 用于过滤字符 -->
<filter>
<filter-name>encode</filter-name>
<filter-class>org.ly.filter.Character</filter-class>
<init-param>
<param-name>ccode</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encode</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
说明:mysql创建数据库时好像用的是utf8字符集,表和记录用的都是utf8。在留言板输入中文后,网页显示出来的都是问号???????????????。大侠快帮帮忙解决,我被搞了整整两天了。
加上这句话,好像是这样写吧 反正就是给response的设置头 内容里面包含字符设定
res.setContentType("text/html;charset=UTF-8");这句是设置页面显示编码
然后你的java文件的编码也最好搞统一了。。
show variables like 'character\_set\_%';
show variables like 'collation_%';
--设置数据库字符编码
set names 'GBK'
alter database payment character set GBK;
create database mydb character set GBK;
set character_set_client=gbk;
set character_set_connection=gbk;
set character_set_database=gbk;
set character_set_results=gbk;
set character_set_server=gbk;
set character_set_system=gbk;
set collation_connection=gbk;
set collation_database=gbk;
set collation_server=gbk;