【发布时间】:2014-11-06 20:52:37
【问题描述】:
当使用 System.Web 中的 HttpUtility 时,我发现每次调用 .ParseQueryString 方法时,我都会将特殊字符编码为它们的 unicode 等效表示。我尝试了许多不同的编码类型,似乎都产生了相同的结果。我的代码示例如下:
string text = "ich möchte diese Bild für andere freigeben"
var urlBuilder = new UriBuilder(url);
var query = HttpUtility.ParseQueryString(urlBuilder.Query, Encoding.UTF8);
query["text"] = text;
urlBuilder.Query = query.ToString();
string finalUrl = urlBuilder.ToString();
finalUrl 中我会收到的字符串是:
text=ich+m%u00f6chte+diese+Bild+f%u00fcr+andere+freigeben
我尝试过使用Encoding.UTF8、Encoding.ASCII 和Encoding.Default,它们都产生了相同的结果。我该怎么做才能达到我想要的 UrlEncoding 格式:
text=ich%20m%C3%B6chte%20diese%20Bild%20f%C3%BCr%20andere%20freigeben
一如既往,提前感谢您的帮助/建议!
【问题讨论】:
-
你会推荐什么?
-
作为旁注,您可能希望将它们显示为未编码,但 URL 规范清楚地表明它们应该被编码。 ietf.org/rfc/rfc1738.txt(第 2 页标记周围)
-
不是我不想对它们进行编码,而是我希望它显示为标准 url 编码与 unicode 编码。
标签: c# asp.net http query-string