1.改变oracle 服务器端的字符集编码
$sqlplus /nolog
SQL>conn / as sysdba;
若此时数据库服务器已启动,则先执行SHUTDOWN IMMEDIATE命令关闭数据库服务器,然后执行以下命令:
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
ALTER DATABASE OPEN;
ALTER DATABASE CHARACTER SET ZHS16GBK; (如果提示需要超集,SET internal_use ZHS16GBK )
SHUTDOWN IMMEDIATE;
STARTUP
为了保证修改字符集后数据不丢失,新字符集必须是旧字符集的超集(完全包含旧字符集)。加一个internal_use强制不检查
2.查看服务器端的字符集编码
select * from nls_database_parameters where parameter='NLS_CHARACTERSET';
select * from PROPS$ WHERE NAME='NLS_CHARACTERSET';
3.更改客户端字符集:
这个是Oracle设置的一个变量。在Windows中,这个变量保存在注册表中:
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0 保存着NLS_LANG变量。
或者:
修改环境变量:
dos 下执行 set NLS_LANG=AMERICAN_AMERICA.JA16SJIS
LANGUAGE指定:
-Oracle消息使用的语言
-日期中月份和日显示
TERRITORY指定
-货币和数字格式
-地区和计算星期及日期的习惯
CHARACTERSET:
-控制客户端应用程序使用的字符集
通常设置或者等于客户端(如Windows)代码页
或者对于unicode应用设置为UTF8
Oracle NLS_CHARACTERSET value
Language
ZHS16CGB231280
Chinese Simplified (GB2312)
gb2312
chinese, csGB2312, csISO58GB231280, GB2312, GB_2312-80, iso-ir-58
ZHS16GBK
Chinese Simplified (Windows)
windows-9361
windows-936
ZHT16BIG5 (alter database character set internal_use ZHS16GBK)
Chinese Traditional
big5
csbig5, x-x-big5
ZHT16MSWIN950
Chinese Traditional
windows-950
ISO2022-CN
Chinese
iso-2022-cn2
csISO2022CN
ZHT32EUC
Chinese Traditional (EUC-TW)
EUC-TW1
ISO2022-JP
Japanese (JIS)
JA16EUC
Japanese (EUC)
JA16SJIS
Japanese (Shift-JIS)
KO16KSC5601
Korean
ISO2022-KR
Korean (ISO)
KO16MSWIN949
Korean (Windows)
UTF8
Universal (UTF-8)
utf-8
unicode-1-1-utf-8, unicode-2-0-utf-8, x-unicode-2-0-utf-8
ZHS32GB18030
gb18030