我的oracle 上 的编码大概是 TRADITIONAL CHINESE_TAIWAN.ZHT16MSWIN950,
我在java端通过 JDBC 连接数据库,在java端把一个String字符串update到oracle数据库中,但是在oracle中查看插入的字符处为乱码。我应该在java端对 该String 字符串做何处理,或者说把它转成什么编码格式请高手指点,谢谢!

解决方案 »

  1.   

     alter database character set internal_use UTF-8;
      

  2.   

    你应该在页面上做一个过滤器,在提交的时候对提交的内容作如下处理 ,比如如下过滤器 ,然后在web.xml中配置一下就可以了
    package com.common.web; 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; /** 
    * 过滤器 处理乱码 
    * 杨悦 2009.01.20 
    * @author yy 

    */ 
    public class CharFilter implements Filter { public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException { 
    request.setCharacterEncoding("gb2312"); 
    chain.doFilter(request, response); } public void init(FilterConfig filterConfig) throws ServletException { } } 
      

  3.   

    下面定义的String a 为从另一个 sql 2000 数据库中 select 出来的值 String a =  String st = new String(a.getBytes("UTF8"),"UTF8");我试过像上面这样的,结果把 st update 到oracle数据库中,在oracle中查看为乱码
     
    也不知道要用怎样的转码格式
      

  4.   

    下面定义的String a 为从另一个 sql 2000 数据库中 select 出来的值 String a =  String st = new String(a.getBytes("UTF8"),"UTF8"); 在 java 中 System.out.println(st);为正确的字符串(三个中文汉字),
    但是存到数据库中的却是乱码,(本来该字符串有三个汉字,但是存到数据库中的只有两个汉字和一个?号)不知何解??
     
    有谁遇到过这种情况吗?
      

  5.   

    你查查sql语句是否是正常的 ,如果是正常的话, 那说明你数据库端的编码设置有一些问题
      

  6.   

    敢问楼上的,如果sql语句正确,那我的数据库端应该如何设置?
      

  7.   

    如果直接在sqlplus中查询时正常,而用java写入就是乱码,是不是java中设置的字符集不正确?
    如果你安装数据库时设置的字符集不是UTF8
    那么在String(a.getBytes("UTF8"),"UTF8")这里也不能用UTF8吧
      

  8.   

    请问楼上,如果 oracle 的 NLS_LANG 变量设置为 TRADITIONAL CHINESE_TAIWAN.ZHT16MSWIN950 在 String(a.getBytes("UTF8"),"UTF8") 中应该使用哪种编码格式
      

  9.   

     那种oracle 字符集 ,你在注册表 oracle 子目录 NLS_LANG 改成 SIMPLIFIED CHINESE_CHINA.ZHS16GBK 或是 SIMPLIFIED CHINESE_CHINA.AL32UTF8 试试
      

  10.   

    NLS_LANG 变量设错了 你搞个台湾的繁体字 中文简体的库当然不认识啦,和JAVA代码没关系,JAVA里面不管你用什么编码,ORACLE客户端都会帮你搞定的
      

  11.   

    谢谢各位!不过我的NLS_LANG 变量就是要设置成 台湾繁体字  ,要不然也不回费这么大事了话说回来台湾繁体字,在JAVA 里面用什么编码格式识别
      

  12.   

    用GBK 这个不管是繁体的还是简体的全部都可以
      

  13.   


    那就把编码格式换成GBK 看看