在我无法控制的函数中,数据正在通过
return xmlFormat(rc.content)
我以后想做一个
<cfoutput>#resultsofreturn#</cfoutput>
问题是所有的 HTML 标签都被转义了。
我考虑过
<cfoutput>#DecodeForHTML(resultsofreturn)#</cfoutput>
但我不确定这些是否互为倒数
在我无法控制的函数中,数据正在通过
return xmlFormat(rc.content)
我以后想做一个
<cfoutput>#resultsofreturn#</cfoutput>
问题是所有的 HTML 标签都被转义了。
我考虑过
<cfoutput>#DecodeForHTML(resultsofreturn)#</cfoutput>
但我不确定这些是否互为倒数
从 CF 10 开始,您应该使用较新的encodeFor
功能。这些函数考虑了高位 ASCII 字符以及 UTF-8 字符。
旧的和破灭的
XmlFormat()
HTMLEditFormat()
JSStringFormat()
新热点
encodeForXML()
encodeForXMLAttribute()
encodeForHTML()
encodeForHTMLAttribute()
encodeForJavaScript()
encodeForCSS()
这些函数的输出因上下文而异。
然后,如果您只是获得转义的 HTML,您可以使用 Jsouo 或 Jakarta Commons Lang 库将其转换回来。相关的 SO 答案中有一些示例。
显然,最好的解决方案是更新现有函数以返回任一版本的内容。有没有办法复制该函数以返回未转义的内容?或者您可以从使用 Java 解决方案转换 HTML 的新函数中调用它吗?
就像 Adrian 总结的那样,最好的选择是实施一个系统来获得预编码的值。
在当前状态下,您使用的字符串已针对 xml 文档进行编码。一种选择是使用文本创建一个 xml 文档,然后将文本从 xml 文档中解析出来。我不确定这种方法的效率如何,但它会将文本返回到它的预编码值。
function xmlDecode(text){
return xmlParse("<t>#text#</t>").t.xmlText;
}