xml - ColdFusion XML 特殊/外来字符丢失

标签 xml coldfusion xml-parsing special-characters

我正在尝试从 this 导入联赛列表XML 文件放入表中。

我能够找到我需要的元素,但如果联赛名称中包含特殊/外来字符,则无法正确显示。

例如,在XML文件中有以下节点:

<trans-unit resname="global.leagueFull.2014.league1005">
    <source>Colombia Finalización</source>
</trans-unit>

但是当我运行代码时,该联赛的输出是哥伦比亚 Finalización。

我的代码如下:

<cfscript>
    xmlContent  = xmlParse("http://www.easports.com/iframe/fut/bundles/futweb/web/flash/xml/localization/messages.en_GB.xml");
    subSet  = xmlSearch(xmlContent,'/xliff/file/body/trans-unit/');
</cfscript>

<cfloop from="1" to="#ArrayLen(subset)#" index="i"> 

    <cfset resName = subSet[i].xmlAttributes.resName />

    <cfif Find("global.leagueFull.2014.league",resName)>
    
        <cfset leagueName = subSet[i].xmlChildren[1].xmlText />
        <cfset leagueID = ListLast(resName,".") />
        <cfset leagueID = Mid(leagueID,7,15) />
    
        <cfoutput>#leagueName#<br /></cfoutput>
    
    </cfif> 

</cfloop>

有谁知道什么可能导致这些字符丢失,以及是否有办法防止或确实补救?

谢谢

最佳答案

如果您看到类似 Finalización 的内容这总是意味着 UTF-8 源已被解释为遗留(即每个字符一个字节)编码。

恭喜,您刚刚在 ColdFusion 中发现了一个错误。 (根据 Adam Cameron 在评论中的提示,这是 Bug #3183072,已在 CF 11 中修复。)

尝试以下解决方法:

<cfhttp url="http://www.easports.com/iframe/fut/bundles/futweb/web/flash/xml/localization/messages.en_GB.xml">

<cfif ListFirst(cfhttp.statusCode, " ") eq "200">
  <cfset xmlContent = XmlParse(cfhttp.FileContent)>
  <cfset xPath = "/xliff/file/body/trans-unit[starts-with(@resname, 'global.leagueFull.2014.league')]">
  <cfset subSet = XmlSearch(xmlContent, xPath)>

  <cfloop array="#subSet#" index="transUnit">
    <cfset leagueName = transUnit.source>
    <cfset leagueID = Mid(ListLast(transUnit.XmlAttributes.resName, "."), 7, 15)>
    <cfoutput>#HTMLEditFormat(leagueName)#<br></cfoutput>
  </cfloop>
<cfelse>
  Error fetching file. (<cfoutput>#cfhttp.StatusCode#</cfoutput>)
</cfif>

请注意,我使用了 XPath 的 starts-with()替换您的 <cfif> 。这样更加高效和简洁。

关于xml - ColdFusion XML 特殊/外来字符丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25011450/

相关文章:

java - 在加载动画期间使背景元素变暗/变暗 - Android

actionscript - 检查表单组是否可见

coldfusion - 我可以在同一台服务器上安装 Coldfusion 9 和 Coldfusion 8 吗?

java - 使用 StAX 保留 XML 布局(属性顺序、换行符)进行小的更改(例如更改属性)

c# - 如何解析 XML 数据以检索子节点值?

php - 当有 CDATA 时,将 xml 转换为 json 不起作用

xml - 如何在 xml 文件 android studio 上按 ctrl+space 修复 "No Suggestion"?

java - 如何减少 Android 按钮对象中文本周围的内部填充?

coldfusion - 是否可以针对组件类型和/或继承类型测试对象?

javascript - 如何创建自封闭元素 javascript XML DOM?