2011-12-19 154 views
3

我的形象:ASP.NET Unicode字符串顯示不正確

http://localhost/WOZNIAK.png 

這出來的罰款。不過,如果我URL以這個規則改寫這個:

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

而訪問這個URL:

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所有查詢字符串PARAMS。這可能是原因嗎?我不確定在URL重寫規則中是否可以這樣做?

如果我設置的字符串:

ImageSrc = context.Server.UrlDecode("WO%c5%b9NIAK.png"); 

它的工作原理。所以我想這個問題是URL編碼重寫規則中的查詢字符串參數。

+0

我認爲編碼的查詢串,然後對其進行解碼將修復它。 – Maysam 2011-12-19 17:30:55

回答

2

我修好了。 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"]);