一、问题
数据库中文乱码该如何处理;
二、分析
导致乱码的原因主要有两个,见下面3项的后两个链接:
首先,大家可以看下这篇文章,分析乱码原因;
其次,大家可以看下这篇文章,讲如何修改字符集;
最后,大家可以看下这篇文章,讲如何修改Oracle数据库内部的字符集;
我目前 面临的问题就是,最后一个问题:我的数据库中的NLS_CHARACTERSET是“WE8MSWIN1252”,而不是能展示中文的“ZHS16GBK”或“UTF8”;
三、解决
请参考如下步骤,登陆SQLPlus中具备sysdba管理员角色的用户来操作;否则会报错权限不足,当然,是乱码的形式;
1、用sysdba管理员角色权限登陆sqlPlus:
sqlplus “/ as sysdba”
2、先关闭database;
SQL> SHUTDOWN IMMEDIATE;
3、开启mount
SQL> STARTUP MOUNT;
4、允许严格session;
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
5、修改任务队列进程为0;
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
6、修改设置aq_tm_processes为0;
SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
7、
SQL> ALTER DATABASE OPEN;
8、修改数据库字符集设置内部使用字符集为UTF8;
SQL> ALTER DATABASE CHARACTER SET INTERNAL_USE UTF8;
9、关闭
SQL> SHUTDOWN IMMEDIATE;
10、重启
SQL> STARTUP;
11、检查是否修改了database的内部字符集;
12、查看我原来的业务数据;
13、删除我原来的数据,重新插入
OK,修改完毕;