私はGETリクエストを処理するアプリケーションを持っています。ワイルドカードとして%
を使用してクエリを行うためのパターンを保持する変数を読みました。 URLにpatt=M%
が含まれている場合は、M
で始まるすべての名前を取得しています。検索パターンとして%D0
を使用しようとするまでは、すべて正常に機能しました。私は次のエラーを取得:私はhttps://www.w3schools.com/tags/ref_urlencode.aspを使用して見つけてきたようにURLでのパーセント記号の処理
The given query string could not be processed. Query strings for this resource must be encoded with 'utf8'.
を、%D0
文字列はUnicode以外の文字のコードとして扱われています。
ここで問題は:%D0
のようなパターンをどのように処理するのですか?言い換えれば、これをエンコードせずに3文字として扱う方法は?私がこれまでに見つけた
つの回避策はpatt=%25D
を使用してのように、%25
代わりの%
を使用することです - しかし、私は実際に要求を処理する必要があると思います。
編集: 例を示します。 tutorialの基本的なcherrpyの例を見てみましょう。私はちょうどparams
を処理し、myvar
の値を返すように変更されました:
import cherrypy
class HelloWorld(object):
@cherrypy.expose
def index(self, **params):
#return "Hello world!"
return cherrypy.request.params['myVar']
if __name__ == '__main__':
cherrypy.quickstart(HelloWorld())
あなたがURLを開くことが実行しているしたら - デフォルトではhttp://localhost:8080/?myVar=blahblahblah
に開始する必要がありますこれは、ページを開いて返しますmyVarに値:blahblahblah
さて、これは私が予防したいエラーが発生しますhttp://localhost:8080/?myVar=%D0
を試してみてください。
もちろん、http://localhost:8080/?myVar=%25D0は正常に動作し、%D0
を示します。
意図したとおりにそれが働いています。 urlencodeされたすべてのURIパーツはcherrypyによって自動的に解読され、ハンドラに渡されます。通常、ブラウザは自動的にURLをurlencodeします。だから私はあなたが何を求めているのか分からない。カスタムクライアントをお持ちの場合は、もちろん適切なURLをエンコードする必要があります。 – webKnjaZ
目的は、ブラウザのアドレスバーに必要なマスクを直接配置することでした。カスタムクライアントはありません。Chrome、Firefox、その他のブラウザのみ。しかし今、私はこれが単純に不可能であると思うようになり、次に自分自身をエンコードしてリダイレクトするテキストボックスを追加する必要があります。 – Maciejg
アドレスバーに手動でクエリを入力するという意味ですか?入力があるフォームがあれば、自動的にエンコードする必要があります。 – webKnjaZ