如何使用JavaScript正确显示umlaute 解决Oracle Apex下字符乱码问题
问题根因
你当前的全局UTF-8配置没有问题,故障原因是JavaScript操作DOM或者内容取值过程中,HTML实体编码被当做纯文本渲染,而非解析为对应字符,不需要修改全局字符集设置。
可行解决方法
- 调整DOM插入方式:如果当前使用
innerText/textContent插入带实体编码的内容,换成innerHTML属性插入即可。innerText会把所有内容当做纯文本展示,innerHTML会自动解析HTML实体编码为对应字符代码示例:
错误写法:document.getElementById("target").innerText = "ü";会直接显示ü
正确写法:document.getElementById("target").innerHTML = "ü";会正常显示为ü - 关闭不必要的转义逻辑:如果是从Oracle Apex的页项、接口中取值,确认没有调用
apex.util.escapeHTML()这类手动转义方法,同时检查对应展示组件的配置:如果是报表列/动态内容区域,在组件的「安全性」设置项中,将转义特殊字符选项关闭即可(该操作仅建议在你确认内容无XSS注入风险时开启) - 手动解码实体编码:如果内容已经被强制转义,可通过以下工具方法先解码再插入DOM:
function decodeHtmlEntities(str) { const tempElem = document.createElement('textarea'); tempElem.innerHTML = str; return tempElem.value; } // 调用示例 const encodedStr = "ü"; const decodedStr = decodeHtmlEntities(encodedStr); document.getElementById("target").textContent = decodedStr;
内容的提问来源于stack exchange,提问作者jackless
相关产品推荐
相关产品推荐

