- 论坛徽章:
- 0
|
费尽周折,终于如愿在rhas3下成功安装了oracle9iR2(9024)。下面开始我的测试工作!
我用plsql developer 在客户端上连接服务器上的数据库,建立的简单的一张表,兴奋的输入第一行数据时,我差点倒下!所有的汉字都变成了大问号!(???)我汗ing
字符集问题!我首先想到了这个问题!(因为安装时其实也出现过这样的问题,不设置字符,汉字就变问号)。我google了一下,差到几篇文档,其中一篇英文的说的比较详细,具体说的是有关字符集的子集与超集问题。说US7ASCII 是WE8ISO8859P1, ZHS16GBK, 和 UTF8的真子集;
如下:
US7ASCII 是 WE8ISO8859P1 的子集
US7ASCII 是 ZHS16GBK 的子集
US7ASCII 也是UTF8 的子集
这篇文档中具体的修改数据库字符集的做法如下:
SQL>; SHUTDOWN IMMEDIATE;
SQL>; STARTUP MOUNT;
SQL>; ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL>; ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL>; ALTER DATABASE OPEN;
SQL>; ALTER DATABASE CHARACTER SET ;
SQL>; SHUTDOWN IMMEDIATE; -- or NORMAL
SQL>; STARTUP;
我如法炮制后,
发现一个错误,说新的字符集必须是原有字符集的超集,才可以更新。
我找了半天,发现我的服务器端字符集是:
我需要把它设置成为ZHS16GBK就可以显示汉字了!
(此办法是最有效的一个办法,但是在我这里行不通,正在思考中)
但是这个方法没有成功,因为ZHS16GBK不是WE8ISO8859P1的超集
那么只好另想办法!
用sys用户登录sqlplus,执行
update props$ set value$='ZHS16GBK' where name='NLS_CHARACTERSET';
然后重新启动数据库
切记,修改完了一定要重起数据库!
还有一个重要注意事项:就是记得设置环境变量!修改 .bash_profile 加入
NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
保存,执行source .bash_profile
让环境变量生效!
然后登陆数据库,插入汉字,查询,正确显示!
大功告成,擦汗! |
|