正文

乱码问题2007-03-12 22:59:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/hurongliang/23891.html

分享到:

一。URL

修改%TOMCAT_HOME%\conf\server.xml文件

找到如下内容:

    <Connector

port="80"               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

               enableLookups="false" redirectPort="8443" acceptCount="100"

               debug="0" connectionTimeout="20000"

               disableUploadTimeout="true" />

添加:URIEncoding="utf-8"

修改后内容如下:

    <Connector

port="80"               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

               enableLookups="false" redirectPort="8443" acceptCount="100"

               debug="0" connectionTimeout="20000"

               disableUploadTimeout="true" URIEncoding="utf-8" />

 

二。处理表单乱码:

用过滤器吧。

下面是用于处理表单的一个filter

 

package hrl.util.filter;

 

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 SetCharacterEncodingFilter implements Filter {

    protected String encoding = null;

    protected FilterConfig filterConfig = null;

    protected boolean ignore = true;

 

    public void init(FilterConfig filterConfig) throws ServletException {

        this.filterConfig=filterConfig;

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

        String value=filterConfig.getInitParameter("ignore");

        if(value==null)

        this.ignore=true;

        else if(value.equalsIgnoreCase("true"))

            this.ignore=true;

        else

            this.ignore=false;

    }

 

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

        // TODO 自动生成方法存根

        if (ignore || (request.getCharacterEncoding() == null)) {

            String encoding = selectEncoding(request);

            if (encoding != null){

                request.setCharacterEncoding(encoding);

            }else

                System.out.println("encoding has not set");

        }

        chain.doFilter(request, response);

    }

 

    public void destroy() {

        // TODO 自动生成方法存根

        this.encoding = null;

        this.filterConfig = null;

    }

 

    protected String selectEncoding(ServletRequest request) {

        return (this.encoding);

    }

}

 

web.xml里配置此filter,将其影射到所有页面上

    <filter>

        <filter-name>encoding filter</filter-name>

        <filter-class>hrl.util.filter.SetCharacterEncodingFilter</filter-class>

        <init-param>

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

            <param-value>utf-8</param-value>

        </init-param>

    </filter>

   

    <filter-mapping>

        <filter-name>encoding filter</filter-name>

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

</filter-mapping>

三。处理jsp&servlet页面显示乱码

JSP中:

最顶端加入如下代码:

<%@ page language="java" pageEncoding="UTF-8"%>

servlet中:

doGet doPost方法中加入如下代码:

response.setCharacterEncoding("utf-8");

四。读取properties文件时出现乱码

如果properties文件里含有中文时不可以用ResourceBundle度取,需先对properties文件进行编码转换

JDK中提供了native2ascii命令 他能够实现字符编码的转换。

假设message.properties 文件在目录WEB-INF/resource目录下

在命令行模式下进入WEB-INF/resource目录,然后执行如下命令

native2ascii –encoding utf-8 message.properties message_zh_CN.properties

参数-encoding表示要转换成的编码格式

执行以上命令以后将生成message_zh_CN.properties文件 现在就可以用ResourceBundle类进行读取了。

五。MYSQL数据库乱码

修改my.ini中关于字体的设置。在连接数据库的URL中指定字符

阅读(2087) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册