【发布时间】:2012-01-23 18:36:16
【问题描述】:
我有图片:
http://localhost/WOZNIAK.png
结果很好。但是,如果我用这个规则重写这个 URL:
<rewrite url="~/images/articles/(.*)$" to="~/handlers/displayimage.ashx?src=$1&type=article" processing="stop"/>
然后访问这个网址:
http://localhost/images/articles/WOZNIAK.png
它不显示图像。我的处理程序从代码开始:
public void ProcessRequest (HttpContext context) {
string ImageSrc = context.Request.QueryString["src"];
string ImageType = context.Request.QueryString["type"];
如果我将ImageSrc 值输出为:
WOŹNIAK.png
如果我在代码中将ImageSrc 明确设置为值ImageSrc = "WOZNIAK.png";,则图像显示正常。
我需要做什么才能让这些 Unicode 字符正确传递?这对我们来说很成问题,因为我们有世界各地的用户上传大量图像,其中一些包含大量带有 Unicode 字符的名称。
由于设计原因,以任何方式重命名或修改这些图像都是非常有问题的,所以我真的很想解决这个问题!
编辑
看来我应该Server.UrlEncode 所有查询字符串参数。这可能是原因吗?我不确定是否可以在 URL 重写规则中做到这一点?
如果我将字符串设置为:
ImageSrc = context.Server.UrlDecode("WO%c5%b9NIAK.png");
它有效。所以我想问题是 URL 编码重写规则中的查询字符串参数。
【问题讨论】:
-
我认为编码查询字符串然后解码它会解决它。
标签: c# asp.net string unicode iis-7.5