您的位置:首页 > 数据库

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

2010-07-28 22:41 351 查看
今天要和一个数据库做人员基础数据同步,对方提供了连接串,结果连上去以后,发现查询对方的中文数据时都显示乱码,因此百度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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐