不是应该配什么字符集的问题,有一个原则,即SERVER端和CLIENT端的字符集要一
致,才能正确显示汉字,你在本地的WIN2000的注册表里把字符集改成
ZHS16CGB231280试试HKEY_LOCAL_MACHINE -> SOFTWARE -> ORACLE -> HOME0 -> NLS_LANG
还有检查一下 UNIX的 .profile文件de NLS_LANG设置
致,才能正确显示汉字,你在本地的WIN2000的注册表里把字符集改成
ZHS16CGB231280试试HKEY_LOCAL_MACHINE -> SOFTWARE -> ORACLE -> HOME0 -> NLS_LANG
还有检查一下 UNIX的 .profile文件de NLS_LANG设置
解决方案 »
- Oracle 不同数据库间的表复制
- sql语句的 中文括号 invalid character 错误
- 百思不得其解的问题
- 问个简单的sql语句问题
- 请教一个问题,谢谢
- DBA STUDIO 中在 文件菜单中点击 从数据库添加到树中选项 无反映,问题会出在哪里?
- 向oracle8i导入ACCESS2003表格数据的问题(在线等!!!)
- 请问在oracle存储过程里怎样实现for/while/loop循环和动态执行sql?
- 请问Oracle是不是不能在P4的机器上安装?我在好几台P4机器上都不行:<
- 送分!送分!送分!
- 急!急!急!如何定时清空数据库
- 在oracle中写存储过程应该注意些什么?我写的错在哪里?请高手指点!!!
2 where parameter in ('NLS_CHARACTERSET',
3 'NLS_LANGUAGE',
4 'NLS_TERRITORY');PARAMETER
----------------------------------------------------------------
VALUE
----------------------------------------------------------------
NLS_LANGUAGE
AMERICANNLS_TERRITORY
AMERICANLS_CHARACTERSET
WE8ISO8859P1根据查询结果,把你的注册表信息改成类似于'AMERICAN_AMERICA.WE8ISO8859P1'这样的格式,也就是NLS_LANGUAGE+'_'+NLS_TERRITORY+'.'+NLS_CHARACTERSET
我已经把2000注册表里的NLS_LANG改为了sun的ZHS16CGB231280 字符集,
但无效果,仍旧是乱的。
最后我连 create database character set ZHS16CGB231280 命令都用了,
把自己的机器的改掉了,仍旧无效。
对了,我没有设置sun的profile文件的NLS_LANG项,因为我觉得oracle9i在
sun上运转很正常,所以我没有去设置它,并且我在sun上装oracle9i时选择的是
针对sun的默认数据库ZHS16CGB231280 。
格式都是:AMERICAN_AMERICA.ZHS16CGB231280 和 AMERICAN_AMERICA.ZHT16BIG5格式。
但,至少我觉得无论怎么说,在sun本机上使用insert命令应该不会插入为乱码才对,我用sun的拼音,明明看到的是简体中文,但到了insert命令就变为乱的拉。
这点不能理解!
还有我的2000机器,安装oracle9i时默认的字符集为简体中文16gbk,但怎么
装完后看注册表怎么会是16big5码呢,难道是盗版没有做好?
现在,我在从装本记的oracle9i,选择字符集为与sun上相同的字符集ZHS16CGB231280 ,等会就知道结果会怎么样。
请你们帮助我。
一般情况你们的sun服务器端设置什么字符集,
本机又设置什么字符集!?
不过我是把它设成 ZHS16GBK 的,在 .profile里面是
NLS_LANG=AMERICAN_AMERICAN.ZHS16GBK
export NLS_LANGCLIENT端也是ZHS16GBK
select userenv('language') from dual;
select name||' '||value$ from sys.props$;
2000是操作系统数据库建在机器SUN里面
是查数据库的字符集,不是sun或2000的字符集
sqlplus>select userenv('language') from dual;USERENV('LANGUAGE')
----------------------------------------------
AMERICAN_AMERICA.ZHS16CGB231280进入2000的sqlplus,用命令:
SQL> select userenv('language') from dual;USERENV('LANGUAGE')
-------------------------------------------------
AMERICAN_AMERICA.ZHS16CGB231280两个字符集完全相同,因为我把2000的oracle从新装过了,
设置的字符集和sun上的oracle一样,可是现在仍旧是乱乱乱码,
我的程序读2000的中文没有问题,可是对sun的就有问题如旧。
我想是不是没有设置sun的profile文件的NLS_LANG问题!
export NLS_LANG
执行了.profile 文件,环境变量生效了,
但仍旧是乱字符!
但有一点我始终不明白,
为什么我在sun的本机上用insert命令插入中文,
明明输入法换成了中文拼音,眼看的清清楚楚是中文文字,
但到了insert命令里却是乱字符,
这是何解呢?
想不通啊!
NLS_LANG=AMERICAN_AMERICAN.ZHS16CGB231280
export NLS_LANG还有再检查一下
select name||' '||value$ from sys.props$;有一个概念需要明确,即不管是在sun上登录 到数据库还是在客户端(WIN2000)
登录,都是登录到sun上的数据库
SQL> select name||' '||value$ from sys.props$;
select name||' '||value$ from sys.props$
*
ERROR at line 1:
ORA-12571: TNS:packet writer failure
sun下执行命令:
Connected.
SQL>
SQL> SQL> select name||' '||value$ from sys.props$;
select name||' '||value$ from sys.propsSP2-0734: $
unknown command beginning "SQL> selec..." - rest of line ignored.
SQL> 2 *
3 ERROR at line 1:
4 ORA-12571: TNS:packet writer failure
都是用sys用户登入的!这条命令是做何用的,怎么返回这些错误!还有就是明确一件事,
那就是我在sun上有个数据库实例,2000下也有一个数据库实例,
我编的delphi程序登入的是2000下的实例对字符集处理正常,
对sun下的实例处理不正常,这是两个不同的实例。
至于NLS_LANG=AMERICAN_AMERICAN.ZHS16CGB231280
export NLS_LANG
我也设置了!
难道说只能在sun和2000下都设置成AMERICAN_AMERICAN.ZHS16GBK字符集才行!
请检查 .profile里面有没有如下语句
ORACLE_HOME=/oracle/oracle8i
export ORACLE_HOME
ORACLE_SID=your_sid
export ORACLE_SID还有,你说2000上也有实例,我就不太明白,你在2000上也建了数据库了?
可能你的2000上的数据库的字符集和sun上的数据库的字符集不一致。还有,你也可以把sun上的数据库的字符集改成 UT8试试,也许就可以了,
不过改成UT8后,每个汉字会变成三个字节长度。这个问题的根本解决办法还是重新安装ORACLE,重建数据库,在建立数据库的时候
一律使用统一的ZHS16GBK
至于最后还是要把程序用来调试sun下的oracle数据库实例。
至于sun下的 .profile里面如下语句
ORACLE_HOME=/oracle/oracle8i
export ORACLE_HOME
ORACLE_SID=your_sid
export ORACLE_SID
均有,否则我不能在sun本机上建立数据库实例,及操作它,
但我现在已经把2000的oracle从装了,设置其字符集为与sun上oracle相同的
AMERICAN_AMERICAN.ZHS16CGB231280字符集(这也是一种简体中文字符集),可是为何仍旧会出现乱码,按道理说服务器和客户端的字符集已经统一了啊。
还有就是我在sun本机上用insert命令插入中文文字时为何在insert命令里就变成了乱码,而我明明换了输入法为拼音,并且在输入法里看到的字为中文,到了insert里就变了呢?
我的solaris5。8操作系统选的字符也16GBK,简体中文。
至于你说在建立数据库的时候一律使用统一的ZHS16GBK,应该是在安装oracle数据库时选择这个ZHS16GBK字符集吧,不应该是建立数据库实例时吧,建立数据库实例时应该选择默认字符集AL16UTF16才对吧?