Html 浏览器如何使用<;中定义的字符串;img src=”等;“字符串”/&燃气轮机;加载图片文件

Html 浏览器如何使用<;中定义的字符串;img src=”等;“字符串”/&燃气轮机;加载图片文件,html,xml,encoding,browser,Html,Xml,Encoding,Browser,我有一个非常奇怪的问题: 我使用xsl显示一个html图片,其中源代码在xml文件中定义如下: <pic src="..\_images\gallery\smallPictures\2009-03-11 אפריקה ושחור לבן\020.jpg" width="150" height="120" /> [有趣的角色是希伯来语-;)] 现在是奇怪的部分: 在本地测试文件时,它可以在Firefox和Safari上工作,但不能在IE和opera上工作。(file://c:

我有一个非常奇怪的问题:

我使用xsl显示一个html图片,其中源代码在xml文件中定义如下:

 <pic src="..\_images\gallery\smallPictures\2009-03-11 אפריקה ושחור לבן\020.jpg" width="150" height="120" /> 

[有趣的角色是希伯来语-;)]

现在是奇怪的部分:

  • 在本地测试文件时,它可以在Firefox和Safari上工作,但不能在IE和opera上工作。(file://c:/file.xml)

  • 接下来,我将文件发送到主机抛出FTP(仅此而已)

  • 当从主机调用页面时,它会突然对所有浏览器起作用:()

  • 问题是服务器如何以我的浏览器可以读取的方式将xml文件发送到我的浏览器,而同一浏览器无法读取本地存储的同一文件

    我一直认为HTML(xml)和图片都会被发送到负责加载页面的客户端——那么为什么相同的文件对我的webhost提供商有效而对我无效呢

    让它完全奇怪的是,IE并不是唯一的——Opera将它与这种奇怪的行为结合在一起

    有什么想法吗

    非常感谢
    Asaf

    在本地打开文件时,没有服务器提供HTTP头。至少这是一个很大的区别。尝试检查浏览器认为页面所在的编码、从光盘手动打开页面的时间以及通过HTTP提供服务的时间


    如果您的脚本或服务器正确设置了头,那么这可能就是原因。

    当您在本地打开文件时,没有服务器提供HTTP头。至少这是一个很大的区别。尝试检查浏览器认为页面所在的编码、从光盘手动打开页面的时间以及通过HTTP提供服务的时间


    如果您的脚本或服务器正确设置了标题,那么这可能就是原因。

    这很可能是编码问题。尝试在生成的HTML页面中显式指定编码,方法是在页面头部包含以下元元素(假设XSLT设置为生成UTF-8):

    
    ...
    ...
    
    这会告诉浏览器在呈现页面时使用UTF-8编码(您实际上可以在Internet Explorer的页面->编码菜单中看到使用的编码)

    当网页由web服务器提供服务时,这种方法之所以有效,是因为web服务器已经告诉浏览器响应在其中一个HTTP头中的编码

    为了基本了解编码的含义,我建议您阅读以下文章:


    这很可能是编码问题。尝试在生成的HTML页面中显式指定编码,方法是在页面头部包含以下元元素(假设XSLT设置为生成UTF-8):

    
    ...
    ...
    
    这会告诉浏览器在呈现页面时使用UTF-8编码(您实际上可以在Internet Explorer的页面->编码菜单中看到使用的编码)

    当网页由web服务器提供服务时,这种方法之所以有效,是因为web服务器已经告诉浏览器响应在其中一个HTTP头中的编码

    为了基本了解编码的含义,我建议您阅读以下文章:

    这是一个Windows文件路径,与有效文件路径不同。您需要:

    • /
      替换
      \
      反斜杠
    • 如果您希望文件位于根目录中,则可以删除
    • 用URL编码的版本替换空格(以及任何其他不利于URL的标点符号)
    • 为了与不正确支持(并避免页面编码问题)的浏览器兼容,像希伯来语这样的非ASCII字符必须采用UTF-8和URL编码
    您应该以以下方式结束:

    <img src="_images/gallery/smallPictures/2009-03-11%20020/%D7%90%D7%A4%D7%A8%D7%99%D7%A7%D7%94%20%D7%95%D7%A9%D7%97%D7%95%D7%A8%20%D7%9C%D7%91%D7%9F%10.jpg"/>
    
    
    
    单独在XSLT中无法将filepath转换为URI。您需要在服务器上使用一些脚本语言,例如在Python中使用
    nturl2path.pathname2url()

    一般来说,最好在XML源代码中以URL形式保留文件引用

    这是一个Windows文件路径,与有效文件路径不同。您需要:

    • /
      替换
      \
      反斜杠
    • 如果您希望文件位于根目录中,则可以删除
    • 用URL编码的版本替换空格(以及任何其他不利于URL的标点符号)
    • 为了与不正确支持(并避免页面编码问题)的浏览器兼容,像希伯来语这样的非ASCII字符必须采用UTF-8和URL编码
    您应该以以下方式结束:

    <img src="_images/gallery/smallPictures/2009-03-11%20020/%D7%90%D7%A4%D7%A8%D7%99%D7%A7%D7%94%20%D7%95%D7%A9%D7%97%D7%95%D7%A8%20%D7%9C%D7%91%D7%9F%10.jpg"/>
    
    
    
    单独在XSLT中无法将filepath转换为URI。您需要在服务器上使用一些脚本语言,例如在Python中使用
    nturl2path.pathname2url()


    一般来说,最好在XML源代码中以URL形式保留文件引用。

    @Asaf,我相信@Svend是正确的。HTTP头将指定内容类型、内容编码和其他内容。编码可能是这种奇怪行为的原因。在没有指定编码的标题信息的情况下,不同的浏览器将使用不同的方法猜测编码


    尝试右键单击浏览器中的页面并“显示页面信息”。根据浏览器的不同,从服务器提供的内容编码应该不同于直接从硬盘提供的内容编码。

    @Asaf,我相信@Svend是正确的。HTTP头将指定内容类型、内容编码和其他内容。编码可能是这种奇怪行为的原因。在没有指定编码的标题信息的情况下,不同的浏览器将使用不同的方法猜测编码

    尝试右键单击浏览器中的页面并“显示页面信息”。内容编码
    <img src="_images/gallery/smallPictures/2009-03-11%20020/%D7%90%D7%A4%D7%A8%D7%99%D7%A7%D7%94%20%D7%95%D7%A9%D7%97%D7%95%D7%A8%20%D7%9C%D7%91%D7%9F%10.jpg"/>