SerializeJSON 创建带有不可打印字符的 JSON(即 ASCII 21)
这是无效的 JSON。我怎样才能解决这个问题。
删除不可打印字符的正则表达式会起作用吗?
什么正则表达式会删除不可打印的字符?
最佳答案
好吧,这个简单的解决方案是为 cffeed 创建的,但您的问题非常相似。
首先,我尝试使用 Java 库 StringEscapeUtils(Commons Lang API),但它没有正确转义我的内容。虽然建议用于 XML。
所以,这个 cfc 方法对我有用。也许也会帮助你。
<cffunction name="cleanXmlString" access="public" returntype="any" output="false" hint="Replace non-valid XML characters">
<cfargument name="dirty" type="string" required="true" hint="Input string">
<cfset var cleaned = "" />
<cfset var patterns = "" />
<cfset var replaces = "" />
<cfset patterns = chr(8216) & "," & chr(8217) & "," & chr(8220) & "," & chr(8221) & "," & chr(8212) & "," & chr(8213) & "," & chr(8230) />
<cfset patterns = patterns & "," & chr(1) & "," & chr(2) & "," & chr(3) & "," & chr(4) & "," & chr(5) & "," & chr(6) & "," & chr(7) & "," & chr(8) />
<cfset patterns = patterns & "," & chr(14) & "," & chr(15) & "," & chr(16) & "," & chr(17) & "," & chr(18) & "," & chr(19) />
<cfset patterns = patterns & "," & chr(20) & "," & chr(21) & "," & chr(22) & "," & chr(23) & "," & chr(24) & "," & chr(25) />
<cfset patterns = patterns & "," & chr(26) & "," & chr(27) & "," & chr(28) & "," & chr(29) & "," & chr(30) & "," & chr(31) />
<cfset replaces = replaces & "',',"","",--,--,..." />
<cfset replaces = replaces & ",-, , , , , , , " />
<cfset replaces = replaces & ", , , , , , " />
<cfset replaces = replaces & ", , , , , , " />
<cfset replaces = replaces & ", , , , , , " />
<cfset cleaned = ReplaceList(arguments.dirty, patterns, replaces) />
<cfreturn cleaned />
</cffunction>
关于json - 如何在 CF8 编码不可打印字符中绕过 SerializeJSON?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1176940/