插入记录后中文就变成了乱码。
(无论是用程序还是用oracle客户端编辑工具都是一样)
我是oracle新手,谢谢帮助

解决方案 »

  1.   

    server是在linux上,客户端在windows2003上。谢谢你
      

  2.   

    若是windows平台的数据库中执行:
    SELECT   *   FROM   V$NLS_PARAMETERS;
    將客户端注冊表ORACLE中﹐NLS_LANG的值改成先前查找出的NLS_LANGUAGE.NLS_CHARACTERSET
      

  3.   

    就是说server端和客户端的字符集必须一致,才不会有乱码
      

  4.   

    我怎么在linux上看oracle是用的什么字符集呀,能不能给出命令行?
      

  5.   

    首先需要确定你的Oracle的字符集是什么,如果你的Oracle的字符集不支持中文,以后显示的时候会乱码.
    在Java中的解决办法:
    将中文转码成ISO再保存,显示时再从ISO转成GBK,就不会有问题了. 转码的java方法如下:
    public static String ISO2GB(String isoStr)
    {
    if (isoStr == null)
    return null; String gbStr = "";
    try
    {
    gbStr = new String(isoStr.getBytes("ISO_8859_1"), "GBK");
    }
    catch(Exception e)
    {
    System.out.println(e);
    }
    return gbStr;
    }
        
    public static String GB2ISO(String gbStr)
    {
    if (gbStr == null)
    return null; String isoStr = "";
    try
    {
    isoStr = new String(gbStr.getBytes("GBK"), "ISO_8859_1");
    }
    catch(Exception e)
    {
    System.out.println(e);
    }
    return isoStr;
    }
      

  6.   

    我运行SELECT   *   FROM   V$NLS_PARAMETERS;之后显示:NLS_LANGUAGE=SIMPLIFIED CHINESE
    NLS_CHARACTERSET=WE8ISO8859P1
    (我感觉这两个就鸲了吧)
    下来怎么办?
      

  7.   

    如果要在Oracle客户端中显示中文,需要将Client的字符集设置成Server(数据库的字符集不是系统的字符集)端的字符集或者Server端字符集的子集.具体做法参考tgm78的方案.
      

  8.   

    在你的客户端注冊表ORACLE中﹐NLS_LANG的值改成WE8ISO8859P1
    即可
      

  9.   

    在windows的注册表(regedit)  中搜索NLS_LANG键,更改键值为:WE8ISO8859P1
      

  10.   

    我把oracle里的nls_lang的值改成“WE8ISO8859P1”了,(并重启了客户端)还是不行呀?
      

  11.   

    我最主要的还是程序无法插入中文,先用客户端insert是想确定乱码不是由于程序造成的。是不是server的配置问题呀?
      

  12.   

    现在客户端可以显示中文嘛?
    你的这个问题估计是要重新安装oracle了,安装的时候选择语言的时候,选择:AMERICAN_AMERICA.ZHS16GBK
      

  13.   

    我把regedit里的所有nls_lang的值都变成了“WE8ISO8859P1”,现在客户端都进不去了,它说:“invalid or unknow NLS parameter value specified”