Python を使用して、utf-8 でエンコードされていないデータ (具体的には shift-jis) をクエリ文字列を介して URL に転送する必要があります。どのようにデータを転送すればよいですか? 引用しますか?utf-8 でエンコードしますか?
ありがとう
クエリ文字列パラメーターはバイトベースです。IRI-to-URI および型指定された非 ASCII 文字は通常 UTF-8 を使用しますが、そのエンコーディングで独自のパラメーターを送信または受信することを強制するものは何もありません。
したがって、Shift-JIS (実際には通常、そのエンコーディングの Windows 拡張である cp932) の場合:
foo= u'\u65E5\u672C\u8A9E' # 日本語
url= 'http://www.example.jp/something?foo='+urllib.quote(foo.encode('cp932'))
Python 3 では、 quote 関数自体でそれを行います。
foo= '\u65E5\u672C\u8A9E'
url= 'http://www.example.jp/something?foo='+urllib.parse.quote(foo, encoding= 'cp932')
クエリ文字列はバイトの文字列であるため、ユニコードがこれにどのような関係があるのか わかりません。urllibの引用関数を使用してプレーン文字列を引用すると、クエリ文字列内で渡すことができます。
»クエリ文字列« とは、のような HTTP GET を意味しますhttp:/{URL}?data=XYZ
か?
オプションとして、代替文字をbase64.b64encode
使用して URL セーフにすることで、持っているデータをエンコードします。ここ-_
を参照してください。