搞懂oracle字符集作为一个ORACLEDBA,在工作中会经常处理由于字符集产生的一些问题。但是当真正想写一些这方面的东西时,却突然又没有了头绪。发了半天呆,还是决定用两个字符集方面的例子作为切入点,倒不失为一个头绪,说不定在实验的过程中,问题就会一个接着一个的浮现出来。现在,让我们切入正题。我用的数据库是 oracle10.2.0.3,数据库字符集是 al32utf8。客户端就是同一台机器的windowsxp.下面是演示的例子:SQL>droptabletestpurge;Tabledropped.SQL>createtabletest(col1number(1),col2varchar2(10));Tablecreated.--session1设置客户端字符集为zhs16gbk(修改注册表 nls_lang项的characterset为zhs16gbk) 向表中插入两个中文字符。SQL>insertintotestvalues(1,'中国');--1为session1的标记1rowcreated.SQL>commit;Commitcomplete.--session2设置客户端字符集al32utf8(修改注册表 nls_lang项的characterset为al32utf8),与数据库字符集相同。向表中插入两个和 session1相同的中文字符。SQL>insertintotestvalues(2,'中国');--2为session2的标记1rowcreated.SQL>commit;Commitcomplete.--session1SQL>select*fromtest;COL1COL2------------------------------2???1中国--session2SQL>select*fromtest;COL1COL2--------------------2中 国1涓 浗从 session1和 session2的 结 果 中 可 以 看 到 , 相 同 的 字 符 ( 注 意 , 我 指 的 是 我 们 看 到 的 ,显 示 为 相 同 的 字 符 ), 在 不 同 的 字 符 集 输 入 环 境 下 , 显 示 成 了 乱 码 。在 zhs16gbk字 符 集 的 客 户 端 , 我 们 看 到 了 utf8字 符 集 客 户 端 输 入 的 相 同 的 中 文 变 成 了 乱码 -->col1=2的 col2字 段在 utf8字 符 集 客 户 端 , 我 们 看 到 zhs16gbk字 符 集 的 客 户 端 输 入 的 中 文 变 成 了 另 外 的 字 符-->col1=1的 col2字 段从 这 个 例 子 里 , 我 们 好 像 感 觉 到 出 了 什 么 问 题 ,也 可 能 会 联 想 起 现 实 环 境 中 出 现 的 乱 码 问 题 。问 题 似 乎 有 了 思 路 , ok, 让 我 们 继 续 把 实 验 做 下 去 :--session1( 或 者 session2, 在 这 里 无 所 谓 )SQL>selectcol1,dump(col2,1016)f...