gpt4 book ai didi

encoding - Safari 根据请求对已编码的 URL 进行编码

转载 作者:行者123 更新时间:2023-12-01 04:17:26 25 4
gpt4 key购买 nike

我在 Safari 中使用以下 URL 对页面执行 HTTP GET 请求:mysite.com/page.aspx?param=v%e5r该页面包含一个回发给自身的表单。
由 asp.net 输出时,HTML 表单标记如下所示:<form method="post" action="page.aspx?param=v%u00e5r" id="aspnetForm" >
当 Safari 将其发回时,它会以某种方式将此 URL 转换为:page.aspx?param=v%25u00e5r ,即它对已经被 URL 编码的字符串进行 URL 编码,然后对其进行双重编码,并且此参数生成的输出是乱码 ( v&#229;r )。我可以在打印之前通过 URL 解码参数来解决这个问题。

Firefox 甚至 IE8 都能很好地处理这个问题。这是 WebKit 中的错误还是我做错了什么?

总结一下:


  • 获取 mysite.com/page.aspx?param=v%e5rHTML:<form method="post" action="page.aspx?param=v%u00e5r" id="aspnetForm" >

  • 发帖 mysite.com/page.aspx?param=v%25u00e5rHTML:<form method="post" action="page.aspx?param=v%25u00e5r" id="aspnetForm" >
  • 最佳答案

    mysite.com/page.aspx?param=v%e5r

    虽然您可以在 URL 的查询部分使用 UTF-8 以外的编码,但这是不可取的,并且通常会混淆假设 UTF-8 的各种脚本。

    您确实希望在标记为 UTF-8 的页面中生成表单,然后在您的应用程序中接受 UTF-8 并编码字符串 vår (假设这就是您的意思)为 param=v%C3%A5r .
    page.aspx?param=v%u00e5r

    哦亲爱的!这是非常错误的。 %uXXXX是一个 JavaScript- escape() - 仅样式序列;放入 URL 是完全无效的。 Safari 可能试图通过对 % 进行编码来修复错误。后面没有带 %25 的两位十六进制序列.

    是 ASP.NET 生成的吗?如果是这样,那就太令人失望了。您如何创建 <form>标签?如果您手动编码参数,也许您需要 specify an Encoding argumentHttpUtility.UrlEncode ? IE。 Encoding.UTF8 ,或者,如果您真的必须拥有 v%e5r , new Encoding(1252) (Windows 代码页 1252,西欧)。

    关于encoding - Safari 根据请求对已编码的 URL 进行编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3204352/

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