关于中文字符串乱码解决方案

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!

你可能感兴趣的:(关于中文字符串乱码解决方案)