如何在Oracle APEX TextArea中对文本进行转义还原?
解决Oracle读取双引号在TextArea显示为
"的问题 问题原因
你看到的"是HTML实体的二次转义:原始双引号"先被转义为",之后&又被再次转义为&,最终变成了"。UTL_URL.UNESCAPE仅处理URL编码(如%22),对HTML实体转义无效,所以没效果。
解决方案
方案1:Oracle端用函数还原
使用Oracle的UTL_I18N.UNESCAPE_REFERENCE函数,它可直接解码HTML实体,包括二次转义的情况:
SELECT UTL_I18N.UNESCAPE_REFERENCE(COMMENTS) FROM T_DQ_RULE WHERE ID = :P2_DQ_RULE_ID
若一次解码未解决,可嵌套调用处理二次转义:
SELECT UTL_I18N.UNESCAPE_REFERENCE(UTL_I18N.UNESCAPE_REFERENCE(COMMENTS)) FROM T_DQ_RULE WHERE ID = :P2_DQ_RULE_ID
方案2:前端页面处理
如果数据库端处理不便,可在前端用JavaScript直接解码:
- 给TextArea项设置静态ID(如
P2_COMMENTS_TEXTAREA) - 在动态动作的JavaScript执行步骤中加入:
var elem = document.getElementById('P2_COMMENTS_TEXTAREA'); // 针对性替换二次转义的双引号 elem.value = elem.value.replace(/"/g, '"'); // 或通用HTML解码方式 elem.value = elem.value.replace(/&/g, '&').replace(/"/g, '"');
方案3:检查APEX项属性
确保TextArea项的**“转义特殊字符”属性设置为“否”**(在APEX项编辑页的“安全性”板块),避免APEX自动对内容做额外转义。
内容的提问来源于stack exchange,提问作者smackenzie
相关产品推荐
相关产品推荐

