不同字符集数据库之间转码办法 以WE8ISO8859P1转到ZHS16GBK为例

来源:互联网 发布:剑灵灵剑士捏脸数据 编辑:程序博客网 时间:2024/05/22 01:45

今天要和一个数据库做人员基础数据同步,对方提供了连接串,结果连上去以后,发现查询对方的中文数据时都显示乱码,因此百度google了一通,其中有查到如下链接的帖子:

 

http://kennyblues.itpub.net/post/31846/455855

 

通过帖子中的办法,没有成功,因此基于它的实现方法,自己摸索,如下方法实现了正常显示

 

select * from nls_database_parameters 能查询数据库字符集、版本等信息

对方数据库:

NLS_CHARACTERSET 为 WE8ISO8859P1
NLS_NCHAR_CHARACTERSET  为 UTF8

 

本方数据库:

NLS_CHARACTERSET 为 ZHS16GBK
NLS_NCHAR_CHARACTERSET 为  AL16UTF16

 

实现方法:

1、在对方数据库建立视图:将中文字段用utl_raw.cast_to_raw转换

CREATE OR REPLACE VIEW v_view (
chinese_field

) AS
SELECT Utl_Raw.cast_to_raw(chinese_field) remark FROM table_name;

 

2、在本地数据库使用DBLINK直接查询

select convert(utl_raw.cast_to_varchar2(chinese_field), 'ZHS16GBK') chinese_field from v_view@db_link_name;

 

原创粉丝点击