java与数据互连,发生字符乱码,估计是数据库字符没有设对,我改怎么设置数据库默认字符呢?win2000和unix下面是不是设置方法不一样?

解决方案 »

  1.   

    Win2000,客户端的字符集应该与服务器端一致:
       HKEY_LOCAL_MACHINE\ SOFTWARE\ORACLE\NLS_LANG
      

  2.   

    lianhg(lianhg)的方法在2000就能实现。
    如果还需要修改数据库字符级看下:
    http://www.ncn.cn/oracle/admin/nls_convert1.htm
      

  3.   

    怎么样查看数据库字符集 
    [A]数据库服务器字符集select * from nls_database_parameters,其来源于props$,是表示数据库的字符集。 
      客户端字符集环境select * from nls_instance_parameter,其来源于v$parameter, 
    表示客户端的字符集的设置,可能是参数文件,环境变量或者是注册表 
      会话字符集环境 select * from nls_session_parameter,其来源于v$nls_parameters,表示会话自己的设置,可能是会话的环境变量或者是alter session完成,如果会话没有特殊的设置,将与nls_instance_parameter一致。 
      客户端的字符集要求与服务器一致,才能正确显示数据库的非Ascii字符。如果多个设置存在的时候,alter session>环境变量>注册表>参数文件 
      字符集要求一致,但是语言设置却可以不同,语言设置建议用英文。如字符集是zhs16gbk,则nls_lang可以是American_America.zhs16gbk。
    1.查询服务器端配置的字符集。在sqlplus中以dba用户执行:
    select tab1.aa||'_'||tab2.bb||'.'||tab3.cc from (select VALUE$ aa from sys.props$ where name='NLS_LANGUAGE')tab1,(select VALUE$ bb from sys.props$ where name='NLS_ISO_CURRENCY')tab2,(select VALUE$ cc from sys.props$ where name='NLS_CHARACTERSET')tab3;2.在客户端的注册表HKEY_LOCAL_MACHINE->SOFTWARE->ORACLE->HOME0中,如无系统变量NLS_LANG,则“新建”->“字符串”,重命名为“NLS_LANG”,并赋值为上述查询变量的值(注意引号内的字符应大写),再查看时不需要重启Oracle。
      

  4.   

    unix环境使用 setenv nlslang ...
    另外键入locale命令看看输出结果
    winnt环境修改注册表nls_lang估计是数据库字符没有设对
    -----------------------
    我认为多半情况是客户机的参数设置的问题.
      

  5.   

    我按照各位大侠的方式,改了以后,还是乱码我的环境:操作系统 英文2000Professional       但是支持是中文
              数据库 Oracle 8.1.7前台jsp的charset是gb2312,前台输入中文,java后台打印出来可以显示,没有问题,但是插入到数据库就发生了乱码???请各位教教我改如何是好?
      

  6.   

    1、检查服务器上Oracle数据库的字符集SQL> conn sys/change_on_install
    连接成功.SQL> desc props$
     列名                          可空值否   类型
     ------------------------------- -------- ----
     NAME                            NOT NULL VARCHAR2(30)
     VALUE$                                   VARCHAR2(2000)
     COMMENT$                                 VARCHAR2(2000)SQL> col value$ format a40
    SQL> select name,value$ from props$;NAME                           VALUE$
    ------------------------------ -------------------------
    DICT.BASE                      2
    NLS_LANGUAGE                   AMERICAN
    NLS_TERRITORY                  AMERICA
    NLS_CURRENCY                   $
    NLS_ISO_CURRENCY               AMERICA
    NLS_NUMERIC_CHARACTERS         .,
    NLS_DATE_FORMAT                DD-MON-YY
    NLS_DATE_LANGUAGE              AMERICAN
    NLS_CHARACTERSET               ZHS16GBK
    NLS_SORT                       BINARY
    NLS_CALENDAR                   GREGORIAN
    NLS_RDBMS_VERSION              7.3.4.0.0
    GLOBAL_DB_NAME                 ORACLE.WORLD
    EXPORT_VIEWS_VERSION           3NLS_CHARACTERSET和NLS_CHAR_CTERSET这个参数应该是ZHS16GBK,如不是,改为它。SQL*Plus中修改方法:
    SQL> update props$ set value$='新字符集' where name='NLS_CHARACTERSET';