【问题标题】:Unable to access xml files, whose addresses' contain unicode characters无法访问地址包含 unicode 字符的 xml 文件
【发布时间】:2011-10-01 08:15:06
【问题描述】:

我想知道如何使用 jquery ajax 访问包含拉丁字符的文件地址。 我尝试使用以下脚本检索 xml 文件中的数据:

$.ajax({
    type:'get',
    url:encodeURI('configuration/'+(value).toLowerCase()+'.xml'),
    dataType:'xml',
    contentType:'application/x-www-form-urlencoded;charset=utf-8;',
    success:function(content){
        $('#content').html($('content',content).text().replace('nL','<br/>'));
    });
});

但当我尝试访问其地址包含 unicode 字符(如 intrusão.xml)的 xml 文件时,问题会激增。

它一直在加载,没有任何反应。 以下是名为intrusão.xml的xml文件示例的内容:

<?xml version="1.0" encoding="utf-8"?>
<document>
    <content>First line.nLSecond line.</content>
</document>

【问题讨论】:

  • 如果使用Fiddler或Firebug之类的工具来监控GET请求,那么实际发送到服务器的URI的值是多少?如果给传递给 $.ajax 的对象添加错误回调函数,异常参数的值或 XHR 参数的状态是什么?
  • 您是否可以直接在浏览器中检索文件?即直接在浏览器的地址栏中输入网址。
  • 我可以在我的家庭服务器中访问它,但不能在我的托管服务器中访问它。当我在托管服务器上检查 error.log 时,它会呈现类似于以下内容的消息:文件不存在:html/configuration/submenus/intrus\xc3\xa3o.xml,intrus\xc3\xa3o.xml 对应于 intrusão.xml
  • 我无法通过浏览器直接访问该文件。我收到一条错误消息,告诉您在此服务器上找不到 /configuration/submenus/intrusão.xml。
  • 我已将托管服务器上的默认字符设置更改为 utf-8 以查看它是否会产生结果,但我遇到了同样的错误。

标签: jquery xml ajax


【解决方案1】:

我推荐你阅读this

他们给出了一些解决方案,但总是修改编码:

  • 更改 Ajax 和 php 编码

  • 转换字符串编码(示例: $str=iconv("windows-1250","UTF-8",$str);)


我会不好意思复制解决方案(不公平),然后,阅读我之前有链接的那个帖子

【讨论】:

  • 我发现它适用于 php,但我需要的是 ajax,因为 ajax 是发出请求的,所以解决方案必须适用于 ajax。调用它的文件是 html 而不是 php。感谢您的关注。
【解决方案2】:
  1. 改变这可能会解决问题

    url: 'configuracao/submenus/' + encodeURI((value).toLowerCase()) + '.xml')
    
  2. 服务器可能不支持非 ascii 字符。检查一下。

【讨论】:

  • 它没有解决我的问题。仍然无法访问包含波浪号的文件。不过谢谢你的建议。
  • 我也试过 url:encodeURI('configuration/submenus/'+escape(value.toLoweCase())+'.xml') 并且没有任何反应。我能够访问不包含拉丁字符集的其他文件,所以问题在于文件名上使用的字符。所以我不能将文件重命名为没有拉丁字符的名称,因为我需要它包含拉丁字符。谢谢。
  • 我更改了托管服务器的默认字符集,但也没有解决。
猜你喜欢
  • 2011-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-21
相关资源
最近更新 更多