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

问题描述 投票:0回答:1

我正在使用 ColdFusion 创建 XML 对象。<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 "编码将其转换为二进制,然后再转换为字符串。

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

xml character-encoding coldfusion coldfusion-11
1个回答
1
投票

这是从以下文件中复制的 cfxml 在此发布 - CFXML

要将一个XML文档对象转换回字符串,使用 ToString 函数,这时ColdFusion会自动预加入 <?xml version="1.0" encoding="UTF-8" ?> XML声明。

要更改声明以指定另一种编码,使用 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声明"

而他们推荐的方法是用"Replace 功能". 所以,对你来说,替换会变成。

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

而你也会想要改变 cfcontent 标记为

<cfcontent type="text/xml; charset=iso-8859-1">
© www.soinside.com 2019 - 2024. All rights reserved.