查询字符串的正确编码是什么?

时间:2011-05-12 14:38:19

标签: c# asp.net http encoding query-string

3 个答案:

答案 0 :(得分:5)

看起来您正在对整个网址应用UrlEncode - 这是不正确的,路径和查询字符串的编码方式与您所见的不同。什么在进行URI的编码,WebRequest?

您可以使用UriBuilder手动构建各个部分,或使用UrlPathEncode手动编码路径,UrlEncode查询字符串名称和值。

编辑:

如果问题出在路径上,而不是查询字符串,您可以尝试打开IRI support,通过web.config

<configuration>
  <uri>
      <iriParsing enabled="true" />
  </uri>
</configuration>

那应该让国际角色独自留在路上。

答案 1 :(得分:2)

答案 2 :(得分:0)

我最终改变了我的远程web服务,期望查询字符串是UTF-8编码的。它解决了我的直接问题,PHP和.NET框架都无法正确调用Web服务。

然而,这种行为现在在浏览器中很奇怪。将“http://mysite.dk/tv%C3%A6rs?test=%C3%A6”等网址粘贴到浏览器中然后按返回工作,它甚至会更正编码后的字符,并将位置显示为“http: //mysite.dk/tværs?test=æ”。如果然后重新加载页面(F5)它仍然有效。但是,如果我单击位置栏并再次按回车,则查询字符串将使用latin-1编码并失败。

对于感兴趣的人来说,这是一个关于这个问题的旧版Firefox错误报告:https://bugzilla.mozilla.org/show_bug.cgi?id=284474(感谢@dtb)

所以,似乎没有好的解决方案。

感谢所有帮助过的人!