gpt4 book ai didi

.net - Internet Explorer 在查询字符串中遇到特殊字符问题

转载 作者:行者123 更新时间:2023-12-03 16:06:24 25 4
gpt4 key购买 nike

这不是一个新问题

这里有很多关于 IE 在处理查询字符串中的特殊字符时遇到问题的问题。在所有情况下都是一样的:Chrome、Firefox、Safari(每个人)都正确处理了 UTF-8 编码的 URL,几乎所有这些甚至都处理了 IRI 未编码为 URL 的情况。但 IE 坚持让开发者过得艰难。

因为我自己遇到了这个问题,并且已经解决了很多问题。对我来说,IE 似乎出于某种原因坚持将 UTF-8 编码的 URL 解码为 ISO-8859-1,然后再将其发送到服务器。

我的案例

我是丹麦的居民,因此我必须使用丹麦字母 æøå。
在很多情况下,我想将 View 中的参数发送到某些 C# 方法中。特殊字符经常出现的地方的两个例子:

  • 搜索
  • 下载文件的文件名规范

  • 假设丹麦人想要搜索丹麦语单词“æblegrød”(一种特殊的苹果派)。在 Chrome 和 Firefox 中,如果我只是用 IRI 提供给浏览器:
    http://example.com/Search/QuickSearch?searchQuery=æblegrød

    发送到服务器的查询如下所示:
    http://example.com/Search/QuickSearch?searchQuery=%C3%A6blegr%C3%B8d

    然而,在 Internet Explorer 中,它看起来像这样:
    http://example.com/Search/QuickSearch?searchQuery=æblegrød

    现在很容易看出问题所在。
    Firefox 和 Chrome 是 URL 编码的 URL

    ... each byte that is not an ASCII letter or digit to %HH, where HH is the hexadecimal value of the byte

    http://www.w3.org/International/O-URL-code.html



    Internet Exlorer 对字符串进行直接的 UTF-8 编码,结果是“Ã|blegrød”。这也与您采用 UTF-8 字符串并将其解码为 ISO-8859-1 的最终结果相同,这是巧合吗?

    我尝试了一些东西

    由于 Internet Explorer 可以选择“以 UTF-8 格式发送 URL 路径”,因此我尝试禁用它。什么都不改变。

    由于 IE 必须处理“searchQuery=æblegrød”时出错,我尝试在将 IRI 交给浏览器之前对其进行编码。导致所有浏览器都使用以下 URL:
    http://example.com/Search/QuickSearch?searchQuery=%C3%A6blegr%C3%B8d

    但是 IE 不在乎,我在网络日志中看到的仍然是 URL
    http://example.com/Search/QuickSearch?searchQuery=æblegrød

    被发送到服务器。

    我的配置是这样的:
  • 文件保存为 UTF-8
  • 我设置了元标记:
    <meta charset="UTF-8">
  • IE 将 URL 路径作为 UTF-8 发送(也将 IE 设置为
    为 Intranet 查询字符串执行此操作)
  • 全局化设置为 UTF-8
    <globalization          
    uiCulture="da-DK"
    culture="da-Dk"

    fileEncoding="utf-8"
    responseEncoding="utf-8"
    requestEncoding="utf-8"
    responseHeaderEncoding="utf-8" />

  • 我的想法不多了,我不知道我做错了什么。我倾向于 IE 造成破坏,但我真的不知道这是否是我在我的项目中设置错误的东西。

    最佳答案

    回答 future 的人遇到这个问题。

    玩弄这个,我得出的结论是,我唯一能做的就是对我所有的 URL 进行编码,然后使用 Content Disposition ( with help from this SO post ) 使其适用于不同的浏览器。该解决方案并不完美,它仍然存在一些缺陷,但它是我迄今为止找到的最佳方法。

    在我的所有案例中,链接都是用 JS 构建的,所以 encodeURIComponent是我对 URL 进行编码的首选方法。

    关于.net - Internet Explorer 在查询字符串中遇到特殊字符问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33391124/

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