oracle中文字符串乱码(在安装oracle没有选择默认安装字符类型造成)
1.客户端访问字符不一致这种情况,我的电脑 - 属性-系统属性-环境变量-系统变量-新建:NLS_LANG 值:AMERICAN_AMERICA.UTF8
2.服务端字符不是ZHS16GBK或者注册表下面不是SIMPLIFIED CHINESE_CHINA.ZHS16GBK
注册表:HEY_LOCAL_MAHINE - SOFTWARE - WOW6432Node - ORACLE - KEY_OraDb11g_home1 下NLS_LANG字段值改为:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
不同系统oracle注册表路径有稍许差异:HEY_LOCAL_MAHINE - SOFTWARE - ORACLE - OraDb11g_home1
//查询oracle服务的字符格式
SELECT * FROM NLS_DATABASE_PARAMETERS;
对应NLS_CHARACTERSET 字段的值是否是:ZHS16GBK?
设置oracle字符格式:
权限不足:默认
sys as sysdba
manager
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup restrict; //需要用restrict模式
ORACLE 例程已经启动。
SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK;
ALTER DATABASE character set INTERNAL_USE ZHS16GBK
*
第 1 行出现错误: //字符长度clob太长,去掉表,重新导入该表,或者修改字符长度
ORA-00604: ???QL ?????????
ORA-00972: ????????
SQL> alter database character set zhs16gbk; //如果超集报错,则用下面的
SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK;//需要用INTERNAL_USE 类型跳过自检超集
//成功
登录数据库查看中文字符是否正确显示,goodlucky!