2011-12-19 26 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値を取る場合には、として出力します:私のハンドラがコードで始まる、私は明示的にコード画像表示罰金の値ImageSrc = "WOZNIAK.png";するImageSrcを設定した場合

WOŹNIAK.png 

これらのUnicode文字を正しく通過させるには、どうすればよいですか?世界中のユーザーに大量の画像をアップロードさせるようになっており、その中にはUnicode文字で多くの名前が含まれているため、非常に問題があります。

これらのイメージの名前を変更したり変更したりするのは、設計上非常に問題があるため、この問題の解決方法が本当に好きです。

編集

それは私がおそらくServer.UrlEncodeすべてのクエリ文字列のparamsをすべきで表示されます。これが原因だろうか? URL書き換えルールでそれを行うことが可能かどうかはわかりません。

私は、文字列を設定した場合:

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

それは動作します。ですから、問題は、書き換えルールのクエリ文字列のパラメータをURLエンコードすることだと思います。

+0

私はそれはそれを修正しますデコードし、クエリ文字列をエンコードすると思います。 – Maysam

答えて

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"]); 
関連する問題