次のような HTTP 文字列を送信していたサーバーと通信しています。
/path/to/my/handler/?action-query&id=112&type=vca&info=ch=0&type=event&ev16[sts=begin (...)
そのため、「info」GET パラメータには「=」と「&」の文字が含まれていました。それはかなり非正統的でしたが、それにもかかわらず、パーサーを作成しました。しかし、最近彼らはその一部をエンコードすることを決定したので、文字列は次のようになります..
/path/to/my/handler/?action=query&id=112&type=vca&info=ch%3D0%26type%3Devent%26ev46[sts%3Dbegin (...)
これにより、最初のような文字列を期待するパーサーが機能しなくなります。
古いコードを使用できるように (パーサーを書き直しても文字列が壊れないように)、どうにかして文字列を「エンコード解除」できますか?
以下の回答に従って、urllib.unquote() を使用して文字列をクリーンアップできます。ただし、最初の文字列に基づいて設定される request.GET に依存しています。新しい変換された文字列に基づいて GET オブジェクトを再構築することは可能ですか、または何らかの方法で再評価を強制することはできますか?