ホームページ  >  記事  >  バックエンド開発  >  Python で URL パラメータを適切にエンコードするにはどうすればよいですか?

Python で URL パラメータを適切にエンコードするにはどうすればよいですか?

DDD
DDDオリジナル
2024-10-27 07:00:03954ブラウズ

How to Properly Encode URL Parameters in Python?

Python での URL パラメーターのエンコード

URL には、エラーを防止し互換性を維持するためにエンコードする必要があるパラメーターが含まれることがよくあります。 Python では、この目的で urllib.quote() 関数が一般的に使用されます。ただし、次のような制限があります。

  • 不完全なエンコーディング: urllib.quote() は「/」文字のエンコードに失敗し、OAuth 正規化が中断される可能性があります。
  • Unicode サポートの問題: Unicode 文字列を処理しようとすると例外がスローされます。

urllib.parse.quote() によるエンコーディングの改善

Python 3 のドキュメントでは、urllib.parse.quote():

<code class="python">urllib.parse.quote(string, safe='/', encoding=None, errors=None)</code>

この関数を使用すると、追加の文字を引用符で囲まずに指定できるようになり、エンコーディングが向上します。デフォルトでは、安全なパラメータには「/」が含まれます。安全のために空の文字列を渡すと、最初の問題が解決されます。

<code class="python">>>> import urllib.parse
>>> urllib.parse.quote('/test', safe='')
'%2Ftest'</code>

Unicode の処理

Unicode サポートに関する 2 番目の問題は、Python 3 で修正されました。Python 2 の場合この問題を回避するには、Unicode 文字列を UTF-8 としてエンコードできます。

<code class="python">>>> query = urllib.quote(u"Müller".encode('utf8'))
>>> print urllib.unquote(query).decode('utf8')
Müller</code>

代替アプローチ: urlencode()

便宜上、urlencode( ) 各パラメータを手動でパーセントエンコードする代わりに。 Unicode とカスタム区切り文字をサポートして、キーと値のペアを自動的にエンコードします:

<code class="python">>>> import urllib.parse
>>> params = urllib.parse.urlencode({'name': 'John Doe'})
'name=John+Doe'</code>

以上がPython で URL パラメータを適切にエンコードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。