oracle导出字符集ZHS16GBK,ORACLE11g数据库字符集从ZHS16GBK转为UTF8

数据库字符集直接查看方法:

select * fromnls_database_parameters;

select * fromv$nls_parameters;

找到 NLS_LANGUAGE_NLS_TERRITORY_NLS_CHARACTERSET

环境变量nls_lang便是由这三部分组成

NLS_LANG = language_territory.charset

比如:NLS_LANG = SIMPLIFIEDCHINESE_CHINA.UTF8

客户终端字符集查看方法:

32位在:

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432NODE\ORACLE\KEY_OraDb11g_home1\NLS_LANG

64位在:

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb11g_home1\NLS_LANG

操作:

将ORACLE11g数据库字符集从ZHS16GBK转为UTF8(或AL32UTF8也可以)

步骤一:执行以下命令

sqlplus "/as sysdba"

conn as sysdba;

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 UTF8;

shutdown immediate;

startup;

步骤二:执行完毕后,设置客户端字符集:

32位在:

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432NODE\ORACLE\KEY_OraDb11g_home1\NLS_LANG

64位在:

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb11g_home1\NLS_LANG

按照上述路径找到后设置NLS_LANG的值为SIMPLIFIED CHINESE_CHINA.UTF8

步骤三:最后再设置环境变量NLS_LANG的值为SIMPLIFIED CHINESE_CHINA.UTF8重启电脑即可,然后执行utf8编码的sql脚本不再出现乱码。

总结:

如果“NLS_LANG”等于“数据库字符集”时,不需要进行任何转换,直接把字符插入数据库

如果“NLS_LANG”不等于“数据库字符集”,则需要进行转换,乱码的根源就在这里。

如果“NLS_LANG”编码跟sql脚本一致,则插入数据库的数据基本不会乱码,但是有可能会导致sqlplus中文提示乱码。

如果“NLS_LANG”编码跟sql脚本不一致,和系统一直,则插入数据库的数据可能会乱码,sqlplus中文提示不乱码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值