代码之家  ›  专栏  ›  技术社区  ›  Eric Belair

如何在ColdFusion中设置XML文档的编码?

  •  0
  • Eric Belair  · 技术社区  · 5 年前

    我正在使用 <cfxml> :

    <cfxml variable="LOCAL.Xml">
        <Root>
            <Header>
                <CompanyName>ACME</CompanyName>
                <AccountNumber>ACM1234</AccountNumber>
                <FileTimeStamp>2020-05-19{T}22:13:51</FileTimeStamp>
                <TimeZone>EDT</TimeZone>
            </Header>
        </Root>
    </cfxml>
    

    当我将其转换为字符串时,XML声明被添加到顶部 encoding="UTF-8" . 如何使用CF11指定不同的编码?

    我试过了 <cfprocessingdirective encoding="iso-8859-1"> .

    <cfheader name="content-disposition" charset="iso-8859-1" value="attachment; filename=file.xml" /> .

    我试过用编码“iso-8859-1”把它转换成二进制,然后再转换成字符串。

    每次我都得到同样的结果。

    0 回复  |  直到 5 年前
        1
  •  1
  •   Miguel-F    5 年前

    这是从文档中复制的 cfxml CFXML

    要将XML文档对象转换回字符串,请使用 ToString <?xml version="1.0" encoding="UTF-8" ?>

    要更改声明以指定另一种编码,请使用 Replace cfcontent 标签。以下示例说明了此过程:

    <cfprocessingdirective suppressWhiteSpace = "yes">
    <cfcontent type="text/xml; charset=utf-16">
    <cfxml variable="xmlobject">
        <breakfast_menu>
        <food>
            <name quantity="50">Belgian Waffles</name>
            <description>Our famous Belgian Waffles</description>
        </food>
        </breakfast_menu>
    </cfxml>
    
    <!--- <cfdump var="#xmlobject#">--->
    
    <cfset myvar=toString(xmlobject)>
    <cfset mynewvar=replace(myvar, "UTF-8", "utf-16")>
    
    <!---<cfdump var="#mynewvar#">--->
    
    <cfoutput>#mynewvar#</cfoutput>
    </cfprocessingdirective>
    

    cfprocessingdirective标记防止ColdFusion将空格字符放在XML声明前面。

    注意,提到 ColdFusion自动在 <?xml version=“1.0”encoding=“UTF-8”?> XML声明 "

    以及他们推荐的改变这种状况的方法 替换 ". 所以对你来说,替代品将变成:

    <cfset myvar=toString(xmlobject)>
    <cfset mynewvar=replace(myvar, "UTF-8", "iso-8859-1")>
    

    你还想改变 氟含量

    <cfcontent type="text/xml; charset=iso-8859-1">