【问题标题】:Internet Explorer doesn't encode url parametersInternet Explorer 不编码 url 参数
【发布时间】:2012-04-24 23:40:12
【问题描述】:

目前正在开发一个有时需要特定 URL 参数的网络应用。比如我在网址栏中输入这个参数:

...Page.aspx?user=chantal.côté

Firefox 和 Chrome 会自动对 URL 进行编码,如下所示:

...Page.aspx?user=chantal.c%C3%B4t%C3%A9

但是 Internet Explorer 不会自动对 URL 进行编码,所以我收到了一个错误,这个符号是 (调试时)。当我输入...Page.aspx?user=chantal.c%C3%B4t%C3%A9 时一切正常,但我不想那样做!

我是否需要明确告诉 Internet Explorer 对 URL 进行编码?

【问题讨论】:

  • 错误是什么?可能有比查找 IE 设置更好的选择。在这种情况下,您必须强制使用您的应用程序的每个人都具有相同的 IE 设置。
  • 当我从 Request.QueryString["user"].ToString() 获取数据时,它给了我符号,而不是 ô 或 é

标签: c# asp.net windows-7 internet-explorer-9


【解决方案1】:

使用

HttpUtility.UrlEncode(string)

【讨论】:

  • 我不能使用它,因为 Request.QueryString["user"].ToString() 给了我�
  • 您需要在重定向上使用它。在发出请求之前对 URL 进行编码,然后在目标页面上使用 UrlDecode(string)。
  • 如果他们将此信息输入到“提交”的表单中,您将对字符串 OnClick 进行编码。有几个事件处理程序允许您在提交之前对字符串进行编码。
  • 也许你不明白我的观点。页面上没有提交。用户在浏览器的网址栏中手动输入参数
  • 你无法控制的。这是IE地址栏的内置功能。
【解决方案2】:

【讨论】:

    【解决方案3】:

    您的网络应用程序可能无法通过让用户手动在浏览器中键入查询字符串来运行。尝试创建一个测试 HTML 页面并在其中包含以下内容:

    <a href="http://whatever.com?user=chantal.côté">link</a>
    

    在 IE 中打开这个测试页面,然后点击链接。查询字符串中的字符将被正确编码。似乎当您手动将内容放入地址栏中时,IE 不会为您对其进行 URL 编码,但希望这一事实与您的应用无关。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-14
      • 1970-01-01
      • 2018-08-10
      • 1970-01-01
      相关资源
      最近更新 更多