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

ORA-31011: XML语法分析失败 LPX-00217: 无效字符 3 (U+0003)

大魔导师秀儿 2025-04-15
212

接到一个问题,前台业务报错

ORA-31011: XML语法分析失败
LPX-00217: 无效字符 3 (U+0003)


问题现象:

前台选择其中一个对象报错,其他对象无报错;为个例,说明数据存在问题。


处理方式:

#查询出现问题的表的xmltype列:

SELECT column_name FROM your_table WHERE column_name LIKE '%' || CHR(3) || '%';


#查询到结果后,打开列内容找到其中的特殊字符所在位置,发现确实存在特殊字符


#修改特殊字符为空

UPDATE your_table SET column_name = REPLACE(column_name, CHR(3), '');


#再次查询对象恢复正常,定位问题原因是由于前天业务操作失误录入了特殊字符导致,问题处理完成


备注:

  • 控制字符范围:U+0000 到 U+001F,除了以下例外:
    • U+0009(Tab,制表符)
    • U+000A(LF,换行符)
    • U+000D(CR,回车符)
  • 具体无效字符列表(U+0000 到 U+001F 中,除去允许的 U+0009、U+000A、U+000D):
    • U+0000(NUL,空字符)
    • U+0001(SOH,开始标题)
    • U+0002(STX,开始文本)
    • U+0003(ETX,结束文本,问题中的字符)
    • U+0004(EOT,传输结束)
    • U+0005(ENQ,询问)
    • U+0006(ACK,确认)
    • U+0007(BEL,响铃)
    • U+0008(BS,退格)
    • U+000B(VT,垂直制表)
    • U+000C(FF,换页)
    • U+000E(SO,移出)
    • U+000F(SI,移入)
    • U+0010(DLE,数据链路转义)
    • U+0011(DC1,设备控制1)
    • U+0012(DC2,设备控制2)
    • U+0013(DC3,设备控制3)
    • U+0014(DC4,设备控制4)
    • U+0015(NAK,否定确认)
    • U+0016(SYN,同步空闲)
    • U+0017(ETB,传输块结束)
    • U+0018(CAN,取消)
    • U+0019(EM,介质结束)
    • U+001A(SUB,替换)
    • U+001B(ESC,转义)
    • U+001C(FS,文件分隔符)
    • U+001D(GS,组分隔符)
    • U+001E(RS,记录分隔符)
    • U+001F(US,单元分隔符)
  • 其他非法字符:
    • U+D800 到 U+DFFF(代理对区域,未分配的 Unicode 代理字符)
    • U+FFFE 和 U+FFFF(非字符,保留用于特殊用途)
  • 「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
    关注作者
    【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论