中文问题小结

通过分析几篇文章,得出以下结论:
1、在JSP页面中,通过在页首添加<%@ page contentType ="text/html;charset=GB18030"  language="java" %>可以在JSP中显示中文!
2、JSP request默认的字符编码格式为ISO8859-1,因此,需要将相关字段值保存到数据库中,需要进行编码转换,可以有如下方式:
     <1>将ISO8859-1编码转换成GB18030编码格式,可写如下方法来实现:
   //字符编码转换:ISO8859-1 ---> GB18030
    public static String toChinese(String strvalue){
         try{
             if(strvalue==null) {
                 return null;
             }
             else{
                strvalue = new String(strvalue.getBytes("ISO8859_1"), "GB18030");
                return strvalue;
         }
         }catch(java.io.UnsupportedEncodingException uee){
             Logger.error("java.io.UnsupportedEncodingException in com.drc.util.Common.toChinese()");
             return null;
         }
   }
        在action中采用如下类似的调用:
        UserLoginActionForm form = (UserLoginActionForm) actionForm;
        //String userName= (String)form.getUserName();
        String userName= Common.toChinese(form.getUserName());
 
 
     <2>通过过滤器方式来实现编码格式转换,可编写如下过滤器:
package com.drc.util;
import javax.servlet.Filter;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.ServletException;
import java.io.IOException;
import javax.servlet.FilterChain;
import java.io.IOException;

public class CharsetFilter implements Filter {
    public void doFilter(ServletRequest request,
                         ServletResponse response,
                         FilterChain chain)
        throws IOException, ServletException {
        request.setCharacterEncoding("GB18030");
        chain.doFilter(request,response);
    }
    public void init(FilterConfig parm1) throws ServletException { }
    public void destroy() { }
}
 
需要在web.xml文件中配置过滤器:
  <display-name>......</display-name>
  <filter>
    <filter-name>CharsetFilter</filter-name>
    <filter-class>com.drc.util.CharsetFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>CharsetFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <servlet> ...... </servlet>
在实现中不用写任何转换代码
 
 
3、直接读取SQL Server2000数据库中的中文值,不用进行相应的编码转换
4、对资源文件中的中文问题,需要进行相应的转换,可采用如下命令行:
    native2ascii -encoding  gb2312 temp.properties application_zh_CN.properties
5、需要写国际化的WEB程序,则需要将所有JSP页面编码格式设为UTF-8,且最好是在过滤器中设置编码格式转换,所有的资源文件全部在资源文件中给出
posted @ 2004-12-16 13:14  wuxh  阅读(331)  评论(1)    收藏  举报