搞懂 oracle
oracle
oracle
oracle
字符集
作为一个 ORACLE DBA, 在工作中会经常处理由于字符集产生的一些问题。 但是当真 正
想写一些 这方面的 东西时,却突然又没有了头绪。发了半天呆,还是决定用两个字符集方 面
的例子作为切入点,倒不失为一个头绪,说不定在实验的过程中,问题就会一个接着一个 的
浮现出来。
现在,让我们切入正题。
我用的数据库是 oracle10.2.0.3, 数据库字符集是 al32utf8 。
客户端就是同一台机器的 windows xp.
下面是演示的例子:
SQL> drop table test purge;
Table dropped.
SQL> create table test(col1 number(1),col2 varchar2(10));
Table created.
--session 1 设置客户端字符集为 zhs16gbk (修改注册表 nls_lang 项的 characterset 为
zhs16gbk ) 向表中插入两个中文字符。
SQL> insert into test values(1,' 中国 '); --1 为 session 1 的标记
1 row created.
SQL> commit;
Commit complete.
--session 2 设置客户端字符集 al32utf8 (修改注册表 nls_lang 项的 characterset 为 al32utf8
) ,
与数据库字符集相同。 向表中插入两个和 session 1 相同的中文字符。
SQL> insert into test values(2,' 中国 '); --2 为 session 2 的标记
1 row created.
SQL> commit;
Commit complete.
--session 1
SQL> select * from test;
COL1 COL2
---------- --------------------
2 ? ??
1 中国