【问题标题】:Get the correct Hexadecimal for strange symbol为奇怪的符号获取正确的十六进制
【发布时间】:2019-08-30 10:19:27
【问题描述】:

我的 pl/sql 开发者客户端上有这个奇怪的符号(检查图像,它是 P 和 B 之间的符号)

在过去,对于不同的符号,我能够更新我的数据库并将它们删除:

update table set ent_name = replace(ent_name, UTL_RAW.CAST_TO_VARCHAR2(HEXTORAW('C29B')), ' ');

问题是我不记得我是如何将符号(我当时有的)翻译成 C29B 的。

您能帮我理解如何将当前符号转换为 HEX 格式,以便我可以使用该命令将其从我的数据库中删除吗?

谢谢

【问题讨论】:

标签: plsql plsqldeveloper


【解决方案1】:

只要它在你的表中,你就可以使用DUMP函数找到它。

使用DUMP 获取您希望检查异常的代码中数据的字节表示形式。

一个很好的概述:Oracle / PLSQL: DUMP Function

这里有一些纯 ASCII 文本:

select dump('Dashes-and "smart quotes"') from dual;

类型=96 长度=25: 68,97,115,104,101,115,45,97,110,100,32,34,115,109,97,114,116,32,113,117,111,116,101,115,34

现在介绍有趣的角色:

select dump('Dashes—and “smart quotes”') from dual;

类型=96 长度=31: 68,97,115,104,101,115,226,128,148,97,110,100,32,226,128,156,115,109,97,114,116,32,113,117,111,116,101,115,226,128,157

在这种情况下,字节数增加了,因为我的数据库正在使用UTF8。超出 ASCII 有效范围的数字会突出显示,可以进一步检查。

ASCIISTR 函数提供了一种更方便的方式来查看特殊字符:

select asciistr('Dashes—and “smart quotes”') from dual;

破折号\2014和\201Csmart报价\201D

这个将非 ASCII 字符转换为反斜杠 Unicode 十六进制。

DUMP 函数接受一个附加参数,可用于以一种很好的方式格式化输出:

select DUMP('Thumbs ?', 1017) from dual;

Typ=96 Len=11 CharacterSet=AL32UTF8: T,h,u,m,b,s, ,f0,9f,91,8d

select DUMP('Smiley ? Face', 17) from dual;

Typ=96 Len=16:S,m,i,l,e,y, ,f0,9f,98,8a, ,F,a,c,e

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-14
    • 2014-02-12
    • 1970-01-01
    • 2019-07-13
    • 2013-12-08
    • 2016-01-17
    • 2021-04-27
    • 1970-01-01
    相关资源
    最近更新 更多