【问题标题】:ColdFusion EncodeForXML not working with UTF-8 charactersColdFusion EncodeForXML 不适用于 UTF-8 字符
【发布时间】:2020-04-15 16:47:35
【问题描述】:

我正在尝试创建一个 XML 文件,并且我有很多特殊字符,例如 ö、ä 等。我使用的是 EncodeForXML(以前使用的是 XMLFormat)但是在浏览器上它看起来不错,如果我单击查看源代码,如果我将内容保存为 XML 文件,这些字符将转换为 öä

这是一个例子:

<?xml version="1.0" encoding="utf-8" ?> 
    <kunde>
    <kdnr>118133</kdnr>
    <fullname>Conny R&#xf6;nnb&#xe4;ck</fullname>
    <delname1>Conny R&#xf6;nnb&#xe4;ck</delname1>
    <delname2></delname2>
    <delstreet>L&#xf6;ftets gr&#xe4;nd 1</delstreet>
    <delcountry>SE</delcountry>
    <delzipcode>90363</delzipcode>
    <deltown>Ume&#xe5;</deltown>
    <phone></phone>
    <mobile></mobile>
</kunde>

任何想法如何使EncodeForXML 函数显示正确的特殊字符?

【问题讨论】:

标签: xml utf-8 coldfusion


【解决方案1】:

您究竟想用 XML 做什么?这正是该函数的作用。它对某些字符进行编码,以便 XML 解析器可以正确解释它们。

<cfsavecontent variable="foo">
    <kunde>
        <kdnr>118133</kdnr>
        <fullname>Conny R&#xf6;nnb&#xe4;ck</fullname>
        <delname1>Conny R&#xf6;nnb&#xe4;ck</delname1>
        <delname2></delname2>
        <delstreet>L&#xf6;ftets gr&#xe4;nd 1</delstreet>
        <delcountry>SE</delcountry>
        <delzipcode>90363</delzipcode>
        <deltown>Ume&#xe5;</deltown>
        <phone></phone>
        <mobile></mobile>
    </kunde>
</cfsavecontent>

<cfdump var="#xmlParse(foo)#">

更新:如果您需要发送实际字符。然后删除encodeForXML() 函数并用[CDATA][1] 包装每个节点的内容。

术语 CDATA,意思是字符数据,在标记语言 SGML 和 XML 中用于不同但相关的目的。该术语表示文档的某个部分是一般字符数据,而不是非字符数据或具有更具体、有限结构的字符数据。

<fullnane><![CDATA[#someQuery.fullname#]]></fullname>

【讨论】:

  • 我需要生成 .XML 文件并保存在服务器上。外部应用程序正在获取 .XML 并使用它。他们说他们不能以这种格式使用它,它需要显示未编码的特殊字符。
  • @AdrianCiocălău 针对该用例进行了更新。
猜你喜欢
  • 2013-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多