暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

记一次Oracle生僻字入库乱码分析

IT那活儿 2021-08-14
2325

现象

近期开发反馈在查询某些数据时,涉及到 《𣆳》这个字时,无法正确显示,有乱码。这个字初看不认识,搜狗或者其它输入法也无法打出来。就直接问开发这个字他是怎么打出来的,回答说是证件扫描入库的,发给我的这个字也是从百度上黏贴下来的。接下来就是分析入库如何正确显示

原因

这个字在百度上搜索了下,显示的是扩展编码,如下图:

通用的数据库中文字符集(NLS_CHARACTERSET ZHS16GBK)是不支持这个字的,导致查询出来有乱码。

解决方案

Mos上有篇文档《Storing And Retrieving Data Into NVARCHAR2 Columns Explained With Test Case (Doc ID 2311604.1)》中提到,如果某些特定字符不支持 NLS_CHARACTERSET,则可以使用 NLS_NCHAR_CHARACTERSET 将数据存储在 NCHAR、NVARCHAR2、NCLOB 中。也就是说该字类型可设置为NVARCHAR2。图一,通过pl/sql developer客户端测试,NVARCHAR2类型的列可以正常显示这个字,而varchar2类型的列则乱码。第二图是通过securecrt这个客户端来查询的,结果2列都是乱码。这说明要想显示这个生僻字客户端工具也需要支持这种编码,显然我这个securecrt工具不支持。

开发提到的这个问题,如果要正确显示的话,要涉及到列类型更改,和开发沟通后,维持现状暂不做处理。

END

更多精彩干货分享

点击下方名片关注

IT那活儿

最后修改时间:2021-08-14 20:48:05
文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论