一、oracle server 端 字符集查询

select userenv('language') from dual

其中NLS_CHARACTERSET 为server端字符集

NLS_LANGUAGE 为 server端字符显示形式

二、查询oracle client端的字符集

$echo $NLS_LANG

如果发现你select 出来的数据是乱码,请把client端的字符集配置成与linux操作系统相同的字符集。如果还是有乱码,则有可能是数据库中的数据存在问题,或者是oracle服务端的配置存在问题。

 

三、server端字符集修改

更改字符集步骤方法(WE8ISO8859P1 --> ZHS16GBK)

开始 - 运行 - 输入cmd 进入命令提示符

输入 sqlplus /nolog

以管理员身份登录sqlplus

​sql> conn / ​​​​as​​ ​​sysdba;​


​sql> shutdown immediate;​


​database​​ ​​closed.​


​database​​ ​​dismounted.​


​oracle instance shut down.​


​sql> startup mount;​


​oracle instance started.​


​total system ​​​​global​​ ​​area 135337420 bytes​


​fixed ​​​​size​​ ​​452044 bytes​


​variable ​​​​size​​ ​​109051904 bytes​


​database​​ ​​buffers 25165824 bytes​


​redo buffers 667648 bytes​


​database​​ ​​mounted.​


​sql> ​​​​alter​​ ​​system enable restricted session;​


​system altered.​


​sql> ​​​​alter​​ ​​system ​​​​set​​ ​​job_queue_processes=0;​


​system altered.​


​sql> ​​​​alter​​ ​​system ​​​​set​​ ​​aq_tm_processes=0;​


​system altered.​


​sql> ​​​​alter​​ ​​database​​ ​​open​​​​;​


​database​​ ​​altered.​


​sql> ​​​​alter​​ ​​database​​ ​​character​​ ​​set​​  ​​internal_use ZHS16GBK;​


​sql> shutdown immediate;​


​sql> startup;​


 


 


四、修改pl/sql developer 的编码



  在windows中创 建一个名为“NLS_LANG”的系统环境变量,设置其值为“SIMPLIFIED CHINESE_CHINA.ZHS16GBK”,然后重新启动 pl/sql developer,这样检索出来的中文内容就不会是乱码了。如果想转换为UTF8字符集,可以赋予“NLS_LANG”为 “AMERICAN_AMERICA.UTF8”,然后重新启动 pl/sql developer。其它字符集设置同上