gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 02:56:57 25 4
gpt4 key购买 nike

我正在尝试从 this 导入联赛列表将 XML 文件转换成表格。

我能够找到我需要的元素,但是联赛名称中有特殊/外来字符的地方无法正确显示。

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

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

但是当我运行我的代码时,这个联赛的输出是 Colombia 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com