2011-01-22 13 views
0

IIS 5.0 Response.Redirectの前に、あなたが指定した文字列をエンコードしていませんでした。文字列をURLエンコードするのはあなた自身の責任でした。 ASPレスポンス。リダイレクトでURLエンコードが行われない "+"記号

は、IIS 4.0では、私たちはただ
Response.Redirect("Page,One.asp") 

ので、新しいのResponse.Redirect関数URLEncodesあなたの文字列を使用して開始し、他の選択肢がないIIS 5.0では

Response.Redirect Server.URLEncode("Page,One.asp") 

を使用しました。

問題は1つだけです。文字列に "+"記号を渡すことはできません。 Response.Redirect("sum=1+3")を実行すると、英数字以外の文字はすべてエンコードされますが、「+」記号は受信ページの空白文字に変わります。

Response.Redirect(“sum=1%2B3”)を実行すると、%2Bが2回エンコードされているため、「合計%3D1%25B23」がサーバーに存在しないため、「404見つかりません」が受信されます。

"+"を%2Bとしてエンコードして、受信ページが実際に一部のテキストの一部であることを理解して表示するようにします。

は私はあなたに例を挙げましょう:あなたは、あなたのブラウザとPRESに http://translate.google.com/#en|tr|1%2B2 を入力すると は、Googleが%受け入れることがわかります入力してくださいテキスト領域で+としてデコードします。

どちら

のResponse.Redirect( "http://translate.google.com/#en|tr|1%2B2")

または

レスポンス。リダイレクト( "http://translate.google.com/#en:tr|1+2")

と同じ効果はありますか?私が与えた例では。私はそのページにリダイレクトしたいだけです。

文字列を最初にエンコードしてからResponse.Redirect unescape("Page%2COne%2Easp")でリダイレクトするなどの方法がありますが、エスケープおよびエスケープ機能はUTF-8とASCII(0-127)の一部をサポートしますが、ANSI(128-255) 、特にヨーロッパのアクセント付き文字。

提案がありますか?

答えて

0

したがって、新しいResponse.Redirect関数のURLはあなたの文字列をエンコードし、他のオプションはありません。

他のオプションはありません。

server.urlencodeがまだ存在します

+1

ありがとうございます。私はそれへの道を見つけました。あなたが正しいです! server.urlencodeは引き続き動作しますが、response.redirectでリダイレクトする場合は、エンコードされているか、エンコードされていません。だから私はresponse.addheader( "Location"、server.url encode( "string"))を使用します。 – user1358065

+0

ここでは、http:// stackoverflowのようなjavascriptリダイレクトを使用しています。com/questions/503093/how-can-make-a-redirect-page-using-jquery – Portekoi

関連する問題