Javascript IE';s responseXML.getElementsByTagName()无法处理非英语字符?

Javascript IE';s responseXML.getElementsByTagName()无法处理非英语字符?,javascript,Javascript,我有一个javascript可以做到这一点(http是XMLHttpRequest对象) 问题是,如果响应包含非英语字符(r.length为0),则变量r始终为空列表 已正确设置响应标头 内容类型:text/xml;字符集=ISO-8859-1 这就是来自Web服务器的响应 <?xml version='1.0' encoding='UTF-8'?> <d> <r> <item value="jmob" label="John Möb"/&g

我有一个javascript可以做到这一点(http是XMLHttpRequest对象)

问题是,如果响应包含非英语字符(r.length为0),则变量r始终为空列表

已正确设置响应标头 内容类型:text/xml;字符集=ISO-8859-1

这就是来自Web服务器的响应

<?xml version='1.0' encoding='UTF-8'?>
<d>
  <r>
    <item value="jmob" label="John Möb"/>
  </r>
</d>

它只在IE(IE6和IE8)中出现,在Firefox和Chrome中工作。 如果项目仅包含英文字符,则可以正常工作


有解决方法吗?

您说响应标题设置正确,但没有。您提供的是UTF-8文档,因此应该是:

内容类型:text/xml;字符集=UTF-8

IE从字面上理解内容类型标题可能存在问题。我不能说我曾经遇到过这个问题,但我没有使用
getElementsByTagName
,因为它不适用于名称空间。您可以使用
selectSingleNode()
selectNodes()
代替:

// Using recursive descent (//) to find all item nodes
var r = http.responseXML.documentElement.selectNodes("//item");

// Specifying the exact path to the item nodes
var r = http.responseXML.documentElement.selectNodes("r/item");

XPath比
getElementsByTagName
提供了更多的功能。您甚至可能会发现,使用正确的路径,您可以放弃一个或两个
if
语句。有关完整的XPath语法,请参阅。

您说过响应头设置正确,但没有正确设置。您提供的是UTF-8文档,因此应该是:

内容类型:text/xml;字符集=UTF-8

IE从字面上理解内容类型标题可能存在问题。我不能说我曾经遇到过这个问题,但我没有使用
getElementsByTagName
,因为它不适用于名称空间。您可以使用
selectSingleNode()
selectNodes()
代替:

// Using recursive descent (//) to find all item nodes
var r = http.responseXML.documentElement.selectNodes("//item");

// Specifying the exact path to the item nodes
var r = http.responseXML.documentElement.selectNodes("r/item");
XPath比
getElementsByTagName
提供了更多的功能。您甚至可能会发现,使用正确的路径,您可以放弃一个或两个
if
语句。有关完整的XPath语法,请参见。

或者,您提供的是ISO-8859-1文档,
或者,您提供的是ISO-8859-1文档,