Oracle 服务器 客户端 US7ASCII、 UTF8字符编码问题

本文介绍了如何使用Oracle的CONVERT函数解决US7ASCII与UTF8字符编码问题,允许从US7ASCII字符集转换到UTF8,以便正确显示中文字符。
在某次项目的实施上,发现从服务器Oracle数据库取过来的数据保存在客户端时中文显示有问题。遂使用SQL语句分别在服务器和客户端查询了下。
SELECT * FROM NLS_DATABASE_PARAMETERS;

    得到
    服务器:NLS_CHARACTERSET=US7ASCII;
    客户端:NLS_CHARACTERSET=AL32UTF8
后BaiDu说将服务器和客户端含中文的字段'str_1'改为
    服务器:utl_raw(cast_to_raw("str_1"))
    客户端:utl_raw(cast_to_varchar2("str_1"));
但是还是不行,在客户端上中文字符还是不对。
后来想到convert()函数。

CONVERT(c1,set1,set2)
【功能】将源字符串c1 从一个语言字符集set2转换到另一个目的set1字符集
【参数】c1,字符串,set1,set2为字符型参数
【返回】字符串

因为Oracle任何版本的数据库都可以将字符类型转换成'ZHS16GBK'类型。可以先将服务器的转换过后的字符串编码从'US7ASCII'转换成'ZHS16GBK',
在客户端将'ZHS16GBK'类型的字符串从'ZHS16GBK'类型再转换成'UTF8'。代码如下:
服务器
convert(utl_raw.cast_to_raw(str_1),'ZHS16GBK','US7ASCII');

客户端
convert(utl_raw.cast_to_VARCHAR2(str_1),'UTF8','ZHS16GBK');

这样就可以访问到服务器的中文字符内容了!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值