其实最好的方法就是系统数据库比如oracle等安装的时候选择成Unicode的安装方式,以后开发就没有这么多烦恼了,可以直接插入、读取、修改,自由自在!

解决方案 »

  1.   

    我用的是MS SQLServer2000,可以设置吗?
      

  2.   

    http://www.csdn.net/develop/Read_Article.asp?Id=17233
      

  3.   

    to:zxhong
    这篇文章也是只讲解了request的解决方法
    我想知道输出如何用Filter解决?
      

  4.   

    filter就可以,不管是输入还是输出,只要有你配置的页面它就进行过滤。
      

  5.   

    可是现在从库中取出的中文还是乱码
    而且我的filter只定义了request,不知如何定义输出这一块
      

  6.   

    写一个自己的ResultSet类myResultSet继承ResultSet
    public String getString(int columnIndex) throws SQLException{
    try{
      return new String((Rst.getString(columnIndex)).getBytes(strDBEncoding),strPageEncoding);
      }
      catch(UnsupportedEncodingException e){
      return null;
    }
    }public String getString(String columnName) throws SQLException{
    try{
      return new String((Rst.getString(columnName)).getBytes(strDBEncoding),strPageEncoding);
      }
      catch(UnsupportedEncodingException e){
      return null;
      }
    }
      

  7.   

    用filter
    1、EncodingStream继承ServletOutputStream,对ServletOutputStream编码
    包括:private pageEncoding,dbEncoding; encoding()
    2、EncodingResponseWrapper继承HttpServletResponseWrapper,从新包装response,其中加入private stream用上面的EncodingStream
    3、filter类
    public final class EncodingFilter implements Filter {
        private FilterConfig filterConfig = null;
        private String pageEncoding = ".";
        private String dbEncoding = ".";
        public void doFilter(ServletRequest request, ServletResponse response,
                             FilterChain chain)
    throws IOException, ServletException {
               EncodingResponseWrapper myWrappedResp = new EncodingResponseWrapper( response, pageEncoding , dbEncoding );
             chain.doFilter(request,  myWrappedResp);
             myWrappedResp.getOutputStream().close();      }    public void destroy() {
        }
        public void init(FilterConfig filterConfig) {      String str;
          if (( str = filterConfig.getInitParameter("page_encoding") ) != null)
               pageEncoding = str;
          if (( str = filterConfig.getInitParameter("db_encoding") ) != null)
               dbEncoding = str; this.filterConfig = filterConfig;    }我没用过,其它代码很简单,就是包装一个ServletResponseWrapper,理论上能实现,你试试吧,:)
    成功了别忘告诉我