【问题标题】:ASP.NET Unicode string displays incorrectlyASP.NET Unicode 字符串显示不正确
【发布时间】:2012-01-23 18:36:16
【问题描述】:

我有图片:

http://localhost/WOZNIAK.png

结果很好。但是,如果我用这个规则重写这个 URL:

<rewrite url="~/images/articles/(.*)$" to="~/handlers/displayimage.ashx?src=$1&amp;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


【解决方案1】:

我修好了。 Intelligencia 有 URL 编码转换,可以像下面这样使用:

<rewrite url="~/images/articles/(.*)$" to="~/handlers/displayimage.ashx?src=${encode($1)}&amp;type=article" processing="stop"/>

然后在代码中显示如下图片:

string ImageSrc = context.Server.UrlDecode(context.Request.QueryString["src"]);

【讨论】:

    猜你喜欢
    • 2012-08-08
    • 1970-01-01
    • 2013-06-05
    • 1970-01-01
    • 2014-02-14
    • 2015-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多