我的开发机器是XP系统,装的ORACLE是默认的字符集,通过Select value$ From props$ Where Name='NLS_CHARACTERSET'出来结果是ZHS16GBK我IMP到LINUX机器后,这台LINUX的ORACLE当初安装也是默认的字符集,发现IMP后的中文都是乱码了
我通过WEB页面INSERT几条记录,都是乱码
通过Select value$ From props$ Where Name='NLS_CHARACTERSET'出来结果是ZHS16GBK我就奇怪了
两台机器都是ZHS16GBK
为什么会出现这种情况?
我通过WEB页面INSERT几条记录,都是乱码
通过Select value$ From props$ Where Name='NLS_CHARACTERSET'出来结果是ZHS16GBK我就奇怪了
两台机器都是ZHS16GBK
为什么会出现这种情况?
在LINUX上修改你登陆账号的nls_lang环境变量
这个变量中的字符集部分改成你的ZHS16GBK看看。
export NLS_LANG=忘了LINUX区分大小写
su - oracle后出现-bash: CHINESE_CHINA.ZHS16GBK: command not found
这个倒没什么关系我在SQLPLUS里直接INSERT一个中文,出来都是乱码,所有中文都是?怎么解决啊?
有的写成
NLS_LANG="Simplified Chinese_China.ZHS16GBK"
有的写成
nls_lang="SIMPLIFIED CHINESE_CHINA".ZHS16GBK
如果装了,就是用户的LANG变量没有设置对.
查看是否安装了中文字符集: locale -a
修改用户环境变量的方法: export LANG= 上面命令显示的中文字符集的一条ps:建议你不要使用linux的sqlplus插入中文,通过window的sqlplus连上linux的库,一样可以啊.
最好使用个工具,比如toad,pl/sql developer都很好.
zh_CN
zh_CN.gb18030
zh_CN.gb2312
zh_CN.gbk
zh_CN.utf8
zh_HK
zh_HK.big5hkscs
zh_HK.utf8
怎么会这样?就算把nls_lang变量的值设置错误,那也只是登陆sqlplus会报错。但su - oracle不应该出错啊、
zh_CN
zh_CN.gb18030
zh_CN.gb2312
zh_CN.gbk
zh_CN.utf8
zh_HK
zh_HK.big5hkscs
zh_HK.utf8
有该有的中文字符集吗?
看看我的解决过程:
SQL> select unitname from xx where rownum<10;UNITNAME
--------------------------------------------------------------------------------
澶у鎴烽儴(浜烘皯甯?
娴烽€氳瘉鍒搁瀺灞变簩閬撹钀ヤ笟閮?娓竵)
娴烽€氳瘉鍒搁瀺灞变簩閬撹钀ヤ笟閮?缇庡厓)
娴烽€氳瘉鍒搁瀺灞变簩閬撹钀ヤ笟閮?浜烘皯甯?
娴烽€氳瘉鍒歌殞鍩犱腑鑽h钀ヤ笟閮?娓竵)
娴烽€氳瘉鍒歌殞鍩犱腑鑽h钀ヤ笟閮?缇庡厓)
娴烽€氳瘉鍒歌殞鍩犱腑鑽h钀ヤ笟閮?浜烘皯甯?
娴烽€氳瘉鍒稿寳浜厜鍗庤矾钀ヤ笟閮?娓竵)
娴烽€氳瘉鍒稿寳浜厜鍗庤矾钀ヤ笟閮?缇庡厓)9 rows selected.SQL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
[oracle@insurance ~]$ ls
CACHE Desktop mykill README.TXT sqlnet.log
[oracle@insurance ~]$ echo $NLS_LANG
AMERICAN_AMERICA.UTF8
[oracle@insurance ~]$ sqlplus /nolog SQL*Plus: Release 10.2.0.1.0 - Production on Fri Aug 1 16:43:56 2008Copyright (c) 1982, 2005, Oracle. All rights reserved.SQL> conn / as sysdba
Connected.
SQL> Select value$ From props$ Where Name='NLS_CHARACTERSET';VALUE$
--------------------------------------------------------------------------------
ZHS16GBKSQL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
[oracle@insurance ~]$ echo $NLS_LANG
AMERICAN_AMERICA.UTF8
[oracle@insurance ~]$ export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
[oracle@insurance ~]$ sqlplus /nologSQL*Plus: Release 10.2.0.1.0 - Production on Fri Aug 1 16:46:10 2008Copyright (c) 1982, 2005, Oracle. All rights reserved.SQL> conn / as sysdba
Connected.
SQL> select unitname from SEC_HTZQ35.bd_corp where rownum<10;UNITNAME
--------------------------------------------------------------------------------
大客户部(人民币)
海通证券鞍山二道街营业部(港币)
海通证券鞍山二道街营业部(美元)
海通证券鞍山二道街营业部(人民币)
海通证券蚌埠中荣街营业部(港币)
海通证券蚌埠中荣街营业部(美元)
海通证券蚌埠中荣街营业部(人民币)
海通证券北京光华路营业部(港币)
海通证券北京光华路营业部(美元)9 rows selected.SQL>
如果装了,就是用户的LANG变量没有设置对.
查看是否安装了中文字符集: locale -a
修改用户环境变量的方法: export LANG= 上面命令显示的中文字符集的一条
我的linux是red hat enterprise 4的英文版
安装时本来可以选择中文版的
但是我想安装成英文的
然后安装oracle时默认的安装,没选字符集现在可以改变成ZHS16GBK吗?