环境如下:
计算机A win2k
C:\>chcp
活动的代码页: 936
数据库A oracle9i
SQL> select * from nls_database_parameters;
PARAMETER VALUE
--------------------------------------------------------------
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CHARACTERSET WE8ISO8859P1
计算机B winxp
C:\>chcp
活动的代码页: 936
数据库B oracle10g
SQL> select * from nls_database_parameters;
PARAMETER VALUE
--------------------------------------------------------------
NLS_LANGUAGE SIMPLIFIED CHINESE
NLS_TERRITORY CHINA
NLS_CHARACTERSET ZHS16GBK
在计算机B 上操作
C:\>set NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
C:\>sqlplus USER/PASS@数据库A
SQL>create table test_char(col varchar2(100));
SQL>insert into test_char values('测试');
SQL>commit;
SQL>select * from test_char;
COL
-----------------------------
测试
数据插入、显示均正常。然后
C:\>sqlplus USER/PASS@数据库B
SQL>create database link DBL_A connect to USER identified by PASS using '数据库A';
SQL>select * from test_char@DBL_A;
COL
------------------------------------
2a昕
数据显示为乱码。
哪位能讲解一下,在计算机B登录到数据库B,并通过dblink访问数据库A的过程中,数据发生了几次字符集转换?
需要如何设置才能保证数据正常显示?多谢!
参考了eygle的文章
http://www.eygle.com/special/NLS_CHARACTER_SET_01.htm