UTF-8 Prozent Kodierung und Python

Ich versuche, Python zu bekommen, um mir Prozent codierte Strings zu geben. Die API Ich interagiere mit (was ich denke, ist mit Prozent codiert UTF-8), gibt% c3% ae für î. Allerdings gibt pythons urllib.quote% 3F.

import urllib mystring = "î" print urllib.quote(mystring) print urllib.quote_plus(mystring) print urllib.quote(mystring.encode('utf-8')) 

Jede Hilfe geschätzt.

2 Solutions collect form web for “UTF-8 Prozent Kodierung und Python”

Ihre Datei muss Ihre Zeichenfolge als utf-8 kodieren, bevor sie sie zitiert, und die Zeichenfolge sollte Unicode sein. Sie müssen auch die entsprechende Dateikodierung für Ihre Quelldatei im coding angeben:

 # -*- coding: utf-8 -*- import urllib s = u'î' print urllib.quote(s.encode('utf-8')) 

Gibt mir die Ausgabe:

 %C3%AE 

Das ist, weil Sie nicht deklarieren die Kodierung Ihre Datei verwendet wird, so dass Python es aus Ihrer aktuellen locale Konfiguration locale . Ich werde Ihnen vorschlagen, dies zu tun:

 # -*- coding: utf-8 -*- import urllib mystring = "î" print urllib.quote(mystring) print urllib.quote_plus(mystring) 

Und auch stellen Sie sicher, dass Ihre file.py wird auf Festplatte mit utf-8 Codierung gespeichert .

Für mich gibt das:

 $python ex.py %C3%AE %C3%AE 

Paar von Vorbehalten. Wenn Sie dies aus dem Interpreter ausprobieren, funktioniert das # -*- coding: utf-8 -*- nicht, wenn Ihre Konsolenkodierung nicht utf-8 . Stattdessen solltest du es ändern, was auch immer die Kodierung deiner Konsole benutzt: # -*- coding: (encoding here) -*- .

Dann sollten Sie Ihre Zeichenfolge in Unicode decode , indem Sie die decode verwenden und den Codierungsnamen, den Ihre Konsole als Argument verwendet, übergeben:

 mystring = "î".decode('<your encoding>') 

Und später geht es an urllib codiert als utf-8 :

 print urllib.quote(mystring.encode('utf-8')) print urllib.quote_plus(mystring.encode('utf-8')) 

Hoffe das hilft!

  • Wie suche und erstelle ich utf-8 Sonderzeichen in Python?
  • UnicodeDecodeError: 'ascii' Codec kann das Byte 0xc3 nicht in Position 23 decodieren: Ordinal nicht im Bereich (128)
  • Wie konvertiere ich eine Datei in utf-8 in Python?
  • Wie kodiere ich (utf8mb4) in Python
  • UnicodeDecodeError: 'ascii' codec kann das Byte 0xef nicht in Position 1 decodieren
  • Konvertieren Sie UTF-8-Oktette zu Unicode-Codepunkten
  • Hinzufügen und Drucken von Nicht-ASCII-Zeichen zu einer List-Python
  • Wie drucken Sie UTF-8 codierten Text an die Konsole in Python <3?
  • Python: Unicode in ASCII ohne Fehler umwandeln
  • Python, wie man Unicode mit Hex-Zeichen decodiert
  • Wie man Unicodes holt und sie in utf-8 Datenbanken speichert
  • Python ist die beste Programmiersprache der Welt.