在我无法控制的功能中,通过
返回数据return xmlFormat(rc.content)
我后来想做一个
<cfoutput>#resultsofreturn#</cfoutput>
问题是所有HTML标记都被转义。
我考虑过了
<cfoutput>#DecodeForHTML(resultsofreturn)#</cfoutput>
但我不确定这些是彼此的反转
答案 0 :(得分:4)
从CF 10开始,您应该使用较新的encodeFor
函数。这些函数占用高位ASCII字符和UTF-8字符。
Old and Busted
XmlFormat()
HTMLEditFormat()
JSStringFormat()
新热度
encodeForXML()
encodeForXMLAttribute()
encodeForHTML()
encodeForHTMLAttribute()
encodeForJavaScript()
encodeForCSS()
这些函数的输出因上下文而异。
然后,如果您只获得转义HTML,则可以使用Jsouo或Jakarta Commons Lang库将其转换回来。有some examples in a related SO answer。
显然,最好的解决方案是更新现有功能以返回任一版本的内容。有没有办法复制该功能,以返回未转义的内容?或者你可以从一个使用Java解决方案来转换HTML的新函数中调用它吗?
答案 1 :(得分:4)
就像阿德里安所说,最好的选择是实现一个系统来获得预编码值。
在当前状态下,您使用的字符串将编码为xml文档。一种选择是使用文本创建一个xml文档,并将文本从xml文档中解析出来。我不确定这种方法的效率如何,但它会将文本返回到它的预编码值。
function xmlDecode(text){
return xmlParse("<t>#text#</t>").t.xmlText;
}