oracle中base64编码解码中文

来源:互联网 发布:mac teamviewer 编辑:程序博客网 时间:2024/06/09 23:06

最近做做报表碰到这样一个问题,要从数据库拿意见字段,但此意见却又被base64编码加密保存!为了解决此问题,也是找了一些时间,功夫不负有心人终于被我找到oracle解码base64。

具体sql如下:

select (utl_raw.cast_to_varchar2(utl_encode.base64_decode(utl_raw.cast_to_raw('5ZCI5ZCM562+6K6i5o+Q5Lqk'))))  from dual

可以看到查询出来的结果,并不是想要结果,是乱码。

解决思路:查看数据库字符集是ZHS16GBK,后改为AL32UTF8,结果查询出来为中文。

修改数据库字符集固然是解决问题的办法,修改字符集会对数据库的数据有直接的影响,本地测试修改字符集无大碍,但如果是生产环境的话,可能会造成不可估计得损失。

最后想到oracle中有个函数convert()  转换字符串为另一种字符串,这个函数应该是可以转化编码的,试了一下,OK可以了。

select convert((utl_raw.cast_to_varchar2(utl_encode.base64_decode(utl_raw.cast_to_raw('5ZCI5ZCM562+6K6i5o+Q5Lqk')))), 'ZHS16GBK', 'UTF8')  from dual

以上就是oracle解析base64编码转中文。

utl_encode包:该UTL_ENCODE软件包提供了将RAW数据编码为标准编码格式的功能,从而可以在主机之间传输数据。您可以使用UTL_ENCODE函数对电子邮件文本的正文进行编码。该包还包含编码功能的解码对应功能。这些功能遵循已发布的编码标准,以适应发送或接收端的非Oracle实用程序。

base64_decode 函数:该函数读取基本64位编码的RAW输入字符串,并将其解码为其原始RAW值。


原创粉丝点击