我想将请求重定向到某个可能包含或不包含非ascii字符的URL(例如德语变音符号)。UrlEncodeUnicode和浏览器导航错误
与URL的相关部分这样做:
var url = HttpUtility.UrlEncodeUnicode("öäü.pdf"); // -> "%u00f6%u00e4%u00fc.pdf"
,然后发出重定向:
Response.Redirect(url, ...);
不会产生所需的行为。看起来,浏览器(IE,Opera,据我测试),当重定向到的URL是Unicode编码时,不遵守这个命令。普通的UrlEncode'd路径工作正常。
我曾尝试在web.config中设置这样的:
<configuration>
<system.web>
<globalization
requestEncoding="utf-8"
responseEncoding="utf-8"
/>
</system.web>
</configuration>
这并没有改变任何事情。
有什么我可以做的,让这个工作?
有趣的是,使用HttpUtility.UrlEncode(...,Encoding.UTF8)实际上可以工作。 当使用UrlEncodeUnicode(...)时,它会生成包含两个%..序列的字符串,而不是单个的%u ....序列。任何想法为什么这是?非常感谢! – skarmats
这不是一个答案。为什么这是upvoted? –
最后一条评论从头开始,看起来我无法正确阅读。 –