我从一个Sql Server字段中,读取一个Text类型的字段内容,显示在网页上面,都是正常的,但我通过页面提交后,保存进入Oracle数据表中后,在从Oracle中读取出来时,汉字却出来乱码情况,请各位大侠、前辈、兄弟姐妹们帮帮我这可怜的人吧!

解决方案 »

  1.   

    你看看存入到ORACLE数据库里是不是就已经是乱码了,还是在ORACLE里正常,显示时是乱码?
    另外,你用的是什么WEB服务器?
      

  2.   


    给Web应用加上过滤器,做一个Fiter,对所有请求统一使用UTF-8编码
    package com.inventec.scm.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 EncodingFilter implements Filter { protected String encoding = null; protected FilterConfig filterConfig = null; protected boolean ignore = true; public void init(FilterConfig filterConfig) throws ServletException {
    // TODO Auto-generated method stub
    this.filterConfig = filterConfig;
    this.encoding = filterConfig.getInitParameter("encoding");
    System.out.println("====initEncodingFilter");
    String value = filterConfig.getInitParameter("ignore");
    if (value == null) {
    this.ignore = true;
    } else if (value.equalsIgnoreCase("true")) {
    this.ignore = true;
    } else if (value.equalsIgnoreCase("yes")) {
    this.ignore = true;
    } else {
    this.ignore = false;
    }
    } public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain chain) throws IOException, ServletException {
    // TODO Auto-generated method stub
    if (ignore || (request.getCharacterEncoding() == null)) {
    String encoding = selectEncoding(request);
    if (encoding != null) {
    request.setCharacterEncoding(encoding);
    }
    }
    chain.doFilter(request, response);
    } public void destroy() {
    // TODO Auto-generated method stub
    this.encoding = null;
    this.filterConfig = null;
    } protected String selectEncoding(ServletRequest request) {
    return (this.encoding);
    }
    }
     
    在Web.xml中配置过滤器,使之能起过滤作用
    <!-- Encoding Filter -->
        <filter>
    <filter-name>Encoding</filter-name>
    <filter-class> com.inventec.scm.filter.EncodingFilter</filter-class>
    <init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
    </init-param>
    </filter>
    <filter-mapping>
    <filter-name>Encoding</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
      

  3.   


    创建数据库库与表时,设定charset.
    CREATE TABLE `article` (
      …
    ) ENGINE=InnoDB DEFAULT CHARSET=GB2312;
    此处要用GBK或GB2312编码
      

  4.   

    两个库设置的默认编码不一致造成的,都设为utf-8。
      

  5.   

    用switch case或条件表达式int c=(a<b)?a:b; 
      

  6.   

    非常奇怪,我把SqlServer字段的内容读取到网页上的<input type=text>文本框中,都不是乱码,但用request.getParameter("title")取出时,就是乱码!我已经设定了
    <%@ page contentType="text/html; charset=GB2312" %>
    <% request.setCharacterEncoding("GB2312"); %>
    如果同样的代码读取oracle数据库就不会有问题,这是为什么呀?
      

  7.   

    已经解决了:new String(request.getParameter("content").getBytes("8859_1"),"gb2312")