[解決済み] PythonでURLパラメータをパーセントエンコードするにはどうしたらいいですか?
2022-03-15 04:23:02
質問
もし、私が
url = "http://example.com?p=" + urllib.quote(query)
-
をエンコードしない
/
を%2F
(OAuthの正規化を破る) - Unicodeを扱えない(例外が発生する)
もっといいライブラリはないですか?
どのように解決するのですか?
Python 2
から ドキュメント :
urllib.quote(string[, safe])
文字列中の特殊文字を置換する は%xxエスケープを使用します。文字、数字。 および文字 '_.-' は決して使用されません。 を引用しています。デフォルトでは、この機能は パスセクションを引用するためのものです。 オプションのsafeパラメータは、URLの は、以下の文字を追加で指定します。 は引用してはいけません。 デフォルトの の値は '/' です。
を渡すということです。
''
に対して
安全
を使えば、最初の問題は解決します。
>>> urllib.quote('/test')
'/test'
>>> urllib.quote('/test', safe='')
'%2Ftest'
2つ目の課題については この件に関するバグレポート . どうやらPython 3で修正されたようです。としてエンコードすることで回避することができます。 UTF-8 このように
>>> query = urllib.quote(u"Müller".encode('utf8'))
>>> print urllib.unquote(query).decode('utf8')
Müller
ちなみに urlencode .
Python 3
>>> import urllib.parse
>>> print(urllib.parse.quote("Müller".encode('utf8')))
M%C3%BCller
>>> print(urllib.parse.unquote("M%C3%BCller"))
Müller
関連
-
PythonによるLeNetネットワークモデルの学習と予測
-
[解決済み] リモート Git リポジトリの URI (URL) を変更するには?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonで辞書に新しいキーを追加するにはどうすればよいですか?
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] ページを再読み込みせずにURLを変更するにはどうすればよいですか?
-
[解決済み] JavaScriptでクエリ文字列の値を取得するにはどうすればよいですか?
-
[解決済み] JavaScriptでURLをエンコードする?
-
[解決済み] クエリ文字列パラメータのJava URLエンコーディング
-
[解決済み】ネストされたディレクトリを安全に作成するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ピローによる動的キャプチャ認識のためのPythonサンプルコード
-
Python 人工知能 人間学習 描画 機械学習モデル作成
-
PythonでECDSAを実装する方法 知っていますか?
-
[解決済み】 AttributeError: モジュール 'matplotlib' には属性 'plot' がない。
-
[解決済み] builtins.TypeError: strでなければならない、bytesではない
-
[解決済み】Python elifの構文が無効です【終了しました
-
[解決済み】LogisticRegression: Pythonでsklearnを使用して、未知のラベルタイプ: '連続'を使用しています。
-
[解決済み】IndexError: invalid index to scalar variableを修正する方法
-
[解決済み】Flask ImportError: Flask という名前のモジュールがない
-
[解決済み】NameError: 名前 'self' が定義されていません。