过滤器源代码如下:
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。在留言板输入中文后,网页显示出来的都是问号???????????????。大侠快帮帮忙解决,我被搞了整整两天了。

解决方案 »

  1.   

    我觉得还是你数据库字符集的问题,你把数据库的创建语句贴出来看看,过滤器是好的但数据表编码是latin1或者gbk的话都会有乱码问题
      

  2.   

    response.setContentType("text/html;charset=utf8");
    加上这句话,好像是这样写吧 反正就是给response的设置头 内容里面包含字符设定
      

  3.   

    把Mysql的默认字符集改为GBK就可以了
      

  4.   

    你看看你的输出网页 jsp 是啥子编码的吧。
      

  5.   

    jsp 页面的问题吧  要统一编码utf8  世界通用吗   世界各地都可以访问 不会乱码gbk2312 中文编码   国内使用网站   国外访问 会是乱码 
      

  6.   

    谢谢各位指导,你们的方法我试过了,还是不行;会不会是我的mysql有问题,我想卸载了,从新装一个试试看。
      

  7.   

    连接数据库时 url后面加上?useUnicode=true&charactorEncoding="utf-8"试试
      

  8.   

    多加一句
    res.setContentType("text/html;charset=UTF-8");这句是设置页面显示编码
      

  9.   

    你写的是request的,只是请求的吧,输出的编码要response设置一下如2楼所说,还有就是jsp的编码。
    然后你的java文件的编码也最好搞统一了。。
      

  10.   

    --查看数据库的字符集
    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;