私はイメージを持っている:ASP.NET Unicode文字列が表示誤っ
http://localhost/WOZNIAK.png
これは罰金出てきます。しかし、私はURLはこのルールでこの書き換える場合:
<rewrite url="~/images/articles/(.*)$" to="~/handlers/displayimage.ashx?src=$1&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エンコードすることだと思います。
私はそれはそれを修正しますデコードし、クエリ文字列をエンコードすると思います。 – Maysam