我的系统框架大概是这样的Java(jdk1.5) Struts tomcat(5.5.17) oracle(9i),用select userenv('language') from dual查询出来的字符集是SIMPLIFIED CHINESE_CHINA.ZHS16GBK,现在如果我在页面上添加信息,存到数据库里面的全部都是乱码并且取到页面的也是乱码,如果我加上Filter的话(GBK),存到数据库中的是中文,但显示在页面还是乱码,而且我进行了各种的转码操作,显示出来的还是显示乱码(??),真不知道是怎么回事。
希望各位大侠能帮帮忙

解决方案 »

  1.   

    使用什么样子的操作系统呢?就是说是不是其他语言的操作系统。还有就是Oracle安装的时候是以什么样的编码保存数据的?然后你说查出来的时乱码,应该是在执行PL-SQL的工具里执行的那么工具的显示编码是否设置了呢?
      

  2.   

    页面加上
    <%@ page language="java" pageEncoding="gb2312" contentType="text/html;charset=gb2312"%>
    试下。
      

  3.   

    我用的是xp系统,oracle安装的时候的字符集没有选用默认的,而是选择的ZHS16GBK,我在pl/sql和jsp页面输出来的全部是乱码,工具的显示编码?是不是指本地的oracle客户端的字符集?
      

  4.   

    这个几个地方的编码要统一。
    java文件的 ,jsp文件的,输出的HTML里面设的,数据库的,tomcat接受到的。
    估计是jsp文件头没设好。
    <%@ page contentType="text/xml;charset=GBK"%>
    这里你设了吗?
      

  5.   

    刚才tcmis,ftiger说的方法我试了,页面还是显示??
      

  6.   

    这是我页面显示出来的样子
    1 ?? aaaaaaaaa           编辑 删除 
    2 gh 1t1t1t1t1t          编辑 删除 
    3 ???????? ?? ????       编辑 删除 
    4 ??梃 ??????????        编辑 删除
      

  7.   

    这是我web.xml的配置内容
    <?xml version="1.0" encoding="gb2312"?>
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"  "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app>  <display-name>STEMS</display-name>
    <filter>
    <filter-name>SetCharacterEncoding</filter-name>
        <filter-class>com.sdta.stems.struts.EncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>GBK</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>SetCharacterEncoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

      <servlet>
        <servlet-name>action</servlet-name>
        <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
        <init-param>
          <param-name>config</param-name>
          <param-value>/WEB-INF/struts-config.xml,/WEB-INF/struts-config-lq.xml</param-value>
        </init-param>
        <load-on-startup>0</load-on-startup>
      </servlet>
      
      <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
      </servlet-mapping>
      
       <!--session时间设置,单位:分钟-->
    <session-config> 
        <session-timeout>60</session-timeout>
    </session-config>
      
       <!--欢迎页面-->
       <welcome-file-list>
            <welcome-file>module/xtgl/resourceadmin/dictdefine/dictlib1_list.jsp</welcome-file>
       </welcome-file-list>   <!--错误页面-->
       <error-page>
         <error-code>404</error-code>
         <location>/pub/error404.jsp</location>
       </error-page>
       
       <error-page>
         <error-code>500</error-code>
         <location>/pub/error500.jsp</location>
       </error-page>
       
      <taglib>
        <taglib-uri>struts-bean</taglib-uri>
        <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>   
      </taglib>  <taglib>
        <taglib-uri>struts-html</taglib-uri>
        <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
      </taglib>
      
      <taglib>
        <taglib-uri>struts-logic</taglib-uri>
        <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
      </taglib>
      
      <taglib>
    <taglib-uri>func</taglib-uri>
    <taglib-location>/WEB-INF/func.tld</taglib-location>
      </taglib> 

    </web-app>
      

  8.   

    保存到数据库已经正确,表示你的V->C->M的encoding Filter有效。
    现在是M->C->V的过程乱码,首先看一下是否正确将从数据库的GBK码正确转换成WEB容器的编码。
    然后确保jsp文件中正确加入了ftiger的建议。
    web.xml不管编码的事,不用贴出来的。
      

  9.   

    呵呵,别着急,慢慢来,好像有一篇文章叫什么java中文问题终极解决方法,是在jdon论坛里面的,你可以去找找
      

  10.   

    <%@ page contentType="text/html; charset=gb2312" language="java" %>