Internet explorer 当IE6请求一个页面时,为什么在ColdFusion中将HTML转换为二进制时会出现错误?

Internet explorer 当IE6请求一个页面时,为什么在ColdFusion中将HTML转换为二进制时会出现错误?,internet-explorer,encoding,coldfusion,binary,internet-explorer-6,Internet Explorer,Encoding,Coldfusion,Binary,Internet Explorer 6,我在后端运行ColdFusion,并将我的页面包装为: <cfsavecontent variable="renderedResults"><p>hello</p></cfsavecontent> <cfscript> compressedHTML = reReplace(renderedResults, "\>\s+\<", "> <", "ALL"); comp

我在后端运行ColdFusion,并将我的页面包装为:

    <cfsavecontent variable="renderedResults"><p>hello</p></cfsavecontent>
    <cfscript>
        compressedHTML = reReplace(renderedResults, "\>\s+\<", "> <", "ALL");
        compressedHTML = reReplace(compressedHTML, "\s{2,}", chr(13), "ALL");
        compressedHTML = reReplace(compressedHTML, "\s{2,}", chr(09), "ALL");
        variables.alredayBinary = "false";
    </cfscript>

    <cfif cgi.HTTP_ACCEPT_ENCODING contains "gzip">
       <cfinvoke component="services.utils" method="gzip" stringToZip="#compressedHTML#" returnvariable="compressedHTML"></cfinvoke>    
       <cfheader name="Content-Encoding" value="gzip">
       <cfset variables.alredayBinary = "true">
    </cfif>

    <cfheader name="Content-Type" value="text/html; charset=ISO-8859-1">
    <cfheader name="Content-Length" value="#len(compressedHTML)#" >

    <cfif variables.alredayBinary EQ "false">
        <cfcontent reset="no" variable="#ToBinary(compressedHTML)#" />
    <cfelse>
        <cfcontent reset="no" variable="#compressedHTML#" />    
    </cfif>
    <cfreturn  /> 
你好


compressedHTML=reReplace(renderedResults,“\>\s+\根据错误消息报告的内容,尝试向
ToBinary
提供base64字符串

<cfcontent reset="no" variable="#ToBinary(ToBase64(compressedHTML))#" />
请注意,这将影响IE6以外的内容。任何未接受gzip的浏览器都会点击if语句


请注意,在我的例子中,我按照你的代码将编码设置为<代码> ISO-859-1 <代码>,但建议你考虑<代码> UTF-8<代码> .< /P>,不,我不想支持IE6。我只想确保代码是正确的。<代码>字符集>代码>它会把我的HTML转换成二进制吗?zip不受支持,这正是我打算做的。@我经常链接到我答案中的文档。从
CharsetDecode
页面:“将字符串转换为二进制表示形式。“我关于点击
if
的说明意味着超过IE6可能会出错,因此这不仅仅是IE6的修复。谢谢!我为IE6设置了一个重定向到“Pleeeze升级”佩奇,现在我可以试着解决这个问题了。很酷。似乎奏效了。我在Firefox中禁用了gzip,进入了if语句并收到了一个二进制字符串和页面。不知道这是否有助于IE6,但肯定让我很开心。最后一个问题:为什么ùtf-8`而不是
iso-8859-1
?我的页面设置为
,但我的主页是德语的,并且在设置req时由于使用了
utf-8
,我的德语Umlaute从未工作过。一旦我切换到
iso-8859-1
,一切都很好。正确的方法是什么?@页面编码是一个更大的讨论。我想你会遇到这个问题,因为cfm源文件没有保存为utf-8。你可以通过在顶部设置
来绕过这个问题受影响文件的(第一行)。
<cfcontent reset="no" variable="#ToBinary(ToBase64(compressedHTML))#" />
<cfcontent reset="no" variable="#CharsetDecode(compressedHTML, "iso-8859-1")#" />