wie eine URL mit nicht utf-8 Argumenten öffnen
Frage
Python muß ich nicht utf-8-codierte Daten übertragen (insbesondere shift-jis) zu einer URL über den Query-String. Wie soll ich die Daten übertragen? Zitiere es? Encode in utf-8?
Danke
Lösung
Abfrage-String-Parameter sind Byte-basiert. Während IRI-to-URI und typisierten Nicht-ASCII-Zeichen der Regel verwenden UTF-8, gibt es Ihnen nichts zwingen, eigene Parameter in dieser Codierung zu senden oder empfangen.
Also für Shift-JIS (eigentlich typisch cp932, die Windows-Erweiterung dieser Codierung):
foo= u'\u65E5\u672C\u8A9E' # 日本語
url= 'http://www.example.jp/something?foo='+urllib.quote(foo.encode('cp932'))
In Python 3 Sie tun es in der Angebotsfunktion selbst:
foo= '\u65E5\u672C\u8A9E'
url= 'http://www.example.jp/something?foo='+urllib.parse.quote(foo, encoding= 'cp932')
Andere Tipps
Ich weiß nicht, was Unicode hat damit zu tun, da der Abfrage-String eine Folge von Bytes ist. Sie können die Angabe Funktionen in urllib blanke Saiten zu zitieren, so dass sie weitergegeben werden können in Query-Strings.
Durch die »Query-String« Sie meinen HTTP GET wie in http:/{URL}?data=XYZ
?
Sie haben kodieren, was auch immer Daten, die Sie über base64.b64encode
haben -_
als alternative Zeichen mit URL sicher als Option zu sein. Siehe hier .