【发布时间】:2011-06-28 06:59:26
【问题描述】:
我需要对可能包含 Unicode 字符的 URL 执行 301 重定向。
HttpUtility.UrlEncode 没有做我需要的事情,因为如果我对整个 URL 进行编码,它会编码任何 ':' 或 '/'
HttpUtility.UrlEncode("http://www.हिन्दी.com") = http%3a%2f%2fwww.%e0%a4%b9%e0%a4%bf%e0%a4%a8%e0%a5%8d%e0%a4%a6%e0%a5%80.com
(也:http://www.%e0%a4%b9%e0%a4%bf%e0%a4%a8%e0%a5%8d%e0%a4%a6%e0%a5%80.com 在 Firefox 或 IE 中似乎不起作用,但在 Chrome 中可以)
我能想到的唯一另一件事是对 URL 的不同部分进行编码,这样协议就不会被编码。
【问题讨论】:
-
我认为您需要将域编码为 IRI / punycode(糟糕的名称),然后再将其传递给重定向,而不仅仅是对您所拥有的内容进行 URL 编码。
标签: c# .net http-status-code-301