手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>Java技术>列表

Java中容易出现乱码的地方以及解决方法

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

(1)显示中文JSP页面:〈%@pageContentType="text/html; chaset=gb2312" %〉

(2)在Weblogic下使用JSTL在头部添加:〈%@page pageEncoding="GBK"%〉

(3)中文页面提交返回获取参数值时:〈%request.setCharacterEncoding("gb2312"); %〉,

也可以采用下面的办法统一处理,首先创建下面的类:

//**********************************************// 



/* 



* TODO 字符编码过滤器 



    */ 



    package summer.admin; 



    import javax.servlet.FilterChain; 



    import javax.servlet.ServletRequest; 



    import javax.servlet.ServletResponse; 



    import java.io.IOException; 



    import javax.servlet.Filter; 



    import javax.servlet.http.*; 



    import javax.servlet.ServletException; 



    import javax.servlet.FilterConfig; 



    /** 



    * @author Coldrain 



    * TODO 字符编码过滤器 



    */ 



    public class EncodingFilter implements Filter{ 



    protected FilterConfig filterConfig; 



    private String targetEncoding = "gb2312"; 



  /** 



    *初始化过滤器,和一般的Servlet一样,它也可以获得初始参数。 



    */ 



    public void init(FilterConfig config) throws ServletException { 



    this.filterConfig = config; 



    if(config.getInitParameter("encoding") !=null){ 



    this.targetEncoding = config.getInitParameter("encoding"); 



    } 



    } 



  /** 



    *进行过滤处理,这个方法最重要,所有过滤处理的代码都在此实现。 



    */ 



    public void doFilter(ServletRequest srequest, 

ServletResponse sresponse, FilterChain chain) 



    throws IOException, ServletException { 



    System.out.println("使用以下方法对请求进行编码:encoding=" targetEncoding); 



    HttpServletRequest request = (HttpServletRequest)srequest; 



    request.setCharacterEncoding(targetEncoding); 



    chain.doFilter(srequest,sresponse); // 把处理权发送到下一个 



    } 



    public void setFilterConfig(final FilterConfig filterConfig) 



    { 



    this.filterConfig=filterConfig; 



    } 



  //销毁过滤器 



    public void destroy() 



    { 



    this.filterConfig=null; 



    } 



    } 



//************************************************************************//

然后在web.xml文件里添加下列配置:

    〈filter〉 



    〈filter-name〉encoding〈/filter-name〉 



    〈filter-class〉summer.admin.EncodingFilter〈/filter-class〉 



    〈init-param〉 



    〈param-name〉encoding〈/param-name〉 



    〈param-value〉gb2312〈/param-value〉 



    〈/init-param〉 



    〈/filter〉 



    〈filter-mapping〉 



    〈filter-name〉encoding〈/filter-name〉 



    〈url-pattern〉/*〈/url-pattern〉 



    〈/filter-mapping〉

(4)Struts中文问题:将中文转换为Unicode字符,可以将下列内容存在一个批处理文件进行:

    Set path==%path%; G:\JavaCode\Bug\web\WEB-INF\classes 



    native2ascii messages.properties messages_zh_CN.properties 



    //G:\JavaCode\Bug\web\WEB-INF\classes表示messages.properties文件存放路径

(5)weblogic中文问题解决直接在weblogic.xml添加下面的内容:

    〈charset-params〉 



    〈input-charset〉 



    〈resource-path〉/*〈/resource-path〉 



    〈java-charset-name〉GBK〈/java-charset-name〉 



    〈/input-charset〉 



    〈/charset-params〉

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!