ASP.NET 与 ASP 中的 Server.UrlEncode 不一样

作者: 来源: 日期:2009-3-27

今天调个下载程序。当下载的 URL 中含有中文时候,无法下载,比如:

http://www.huachu.com.cn/itbook/booklist.asp?tsmc=汇编

我就用 .NET 中的 Server.UrlEncode 函数进行转换。但是这样仍然不行。试验了很久也没有找到原因。后来怀疑 ASP.NET 中的 Server.UrlEncode 函数和 ASP 中的 Server.URLEncode 函数返回的值竟然不一样。一实验,竟然确实是。

试验代码

  • ASP.NET 中,代码 Response.Write(Server.UrlEncode("汇编")); 返回:%e6%b1%87%e7%bc%96
  • ASP 中,代码 Response.Write Server.URLEncode("汇编") 返回:%BB%E3%B1%E0

问题原因

  • ASP.NET 中的 Server.UrlEncode 默认是按照 UTF-8 编码方式进行处理的;
  • 而 ASP 中是按照本地设置编码方式进行处理的。

解决方法

如果你在 ASP.NET 下采用如下的编码:ASP 和 ASP.NET 的结果就会一样:

Response.Write(HttpUtility.UrlEncode("汇编", Encoding.Default));

采用 Response.Write(HttpUtility.UrlEncode("汇编", Encoding.UTF8)); 返回的就是 Response.Write(Server.UrlEncode("汇编")); 返回的结果。

(System.Text.Encoding.Default 的作用是获取与系统区域设置中的默认 ANSI 代码页相关联的编码。ITPOW编辑注)

相关阅读

相关文章