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/

10-12 02:53