HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\nls_lang对你的应用没有影响
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ALL_HOMES\IDO\nls_lang没有改过
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMEO\nls_lang ORACLE的该软件产品的客户端的子符集,该项比较有用,如:如果HOMEO表示ORACLE的数据库软件,那么HOMEO\nls_lang 下的子符集必须同数据库中的一致,否则会出现中文乱码现象。

解决方案 »

  1.   

    我做的是个翻译系统,不仅有中文,还有日文,韩文,等等全世界的语言.
    所以想修改数据库的字符集,存是encode,取出后再decode.我想改数据库本身的字符集试试,但不只到如何改?
      

  2.   

    我是这样改的,不知道对否?
    //当前字符集
    SQL> select name,value$ from props$ where name='NLS_CHARACTERSET';NAME                           VALUE$
    ------------------------------ ----------------------------------------
    NLS_CHARACTERSET               US7ASCII//change to UTF8
    update  props$ set value$='UTF8' where name='NLS_CHARACTERSET';//changed
    SQL> select name,value$ from props$ where name='NLS_CHARACTERSET';NAME                           VALUE$
    ------------------------------ ----------------------------------------
    NLS_CHARACTERSET               UTF8
      

  3.   

    由US7ASCII改为UTF8,子集改为超集是可以的
      

  4.   

    不建议使用
    update  props$ set value$='UTF8' where name='NLS_CHARACTERSET'
      

  5.   

    建议修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMEO\
    增加一个串nls_lang,值为:UTF8
      

  6.   

    please reference:http://www.itpub.net/showthread.php?s=f0a41a79d8a516d855ed3957032849a3&threadid=16136
      

  7.   

    如果要查看客户端字符集,即当前使用字符集,则可以在注册表中直接找到,但要查看ORACLE数据库事例的字符集,则查看注册表是没有用的,一下SQL语句可以帮你了解数据库字符集:
      select userenv('LANGUAGE'),userenv('LANG') from dual;
    修改注册表不能修改数据库的字符集,修改数据库的字符集需要修改数据库的配置参数,我没有试过,不知道是否可以。
      

  8.   

    还有,改完需不要重新启动数据库?
    是不是修改注册表建议修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMEO\
    增加一个串nls_lang,值为:UTF8与update  props$ set value$='UTF8' where name='NLS_CHARACTERSET';作用等同?
      

  9.   

    在oracle 8i或以上版本中,可以修改字符集以及国家字符集:
    alter database db1 character set WE8ISO8859P1;
    alter database db1 national character set WE8ISO8859P1;Restrictions:
    1、 You must have SYSDBA system privilege, and you must start up the database in restricted mode (for example, with the SQL*Plus STARTUP RESTRICT command).
    2、 The current character set must be a strict subset of the character set to which you change. That is, each character represented by a codepoint value in the source character set must be represented by the same codepoint value in the target character set.请千万小心:alter database character set命令是不可逆的,也就是说一旦修改了,就不一定能改回来,所以请先对数据库进行冷备份,以防万一。
      

  10.   

    update  props$ set value$='UTF8' where name='NLS_CHARACTERSET';
    命令是可以修改数据库字符集的,但是我碰到过这种情况。
    服务器端是9i,修改完后如果客户端装的也是9i的话没什么问题,但是如果客户端装的是8.1.5及以下的版本的话,在两个客户端写进去的东西分别在另外的客户端读出来就是乱码的,最后我把数据库删掉重建,在开始时就选定字符集就OK了。所以我建议字符集还是需在建库时就选好,否则数据库的版本兼容就不行了
      

  11.   

    查看字符集,执行查询:
    select * from porps$ where name = 'NLS_CHARACTERSET';Import会话时,可以在NLS_LANG设置字符集,
    CHARSET选项也是用来指定导出文件的字符集的,但是可能会导致数据丢失,估计以后会有改善。