Wie konvertiert ein UTF-string mit skandinavischen Zeichen in ASCII?
Ich würde gerne konvertieren Sie diese Zeichenfolge
foo_utf = u'nästy chäräctörs with å and co.' # unicode
in diesem
foo_ascii = 'nästy chäräctörs with å and co.' # ASCII
.
Irgendeine Idee, wie man dies in Python (2.6)? Ich fand unicodedata Modul aber ich habe keine Ahnung, wie die transformation.
- ascii nicht å ä ö und andere, wollen Sie etwas anderes, z.B. iso 8859-1(latin-1) oder utf-8 ?
- Wahrscheinlich habe ich die Frage neu zu formulieren, ein bisschen. Ich lief in das Thema während der Entwicklung einer template-tag für Django. Ich bemerkte es funktioniert gut, wenn mit reguläre Zeichenfolgen, aber scheitert, während genau die gleichen unicode-string.
- Ihre top-string ist nicht jede form von UTF. UTF unicode-Codierungen, das heißt, Sie sind Sequenzen von bytes, die unicode-Zeichen darstellen. Was Sie haben, ist eine unicode-Zeichenfolge, die eine Folge von Zeichen. Die Anzahl der bytes in jedem ist irrelevant, und es ist unmöglich zu bestimmen, von in python. Die Unterscheidung ist nicht bloße Pedanterie. Zu verstehen, was python macht mit Ihrem text wird Ihnen helfen, vermeiden Sie die lästigen
Unicode{En,De}codeError
s.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist wirklich eine Django-Frage, und nicht eine python-Version.
wenn die Zeichenfolge in eine der Ihren .py-Dateien, stellen Sie sicher, dass Sie die folgende Zeile am Anfang der Datei:
-*- coding: utf-8 -*-
darüber hinaus die Zeichenfolge muss vom Typ "unicode" (u'foobar')
Und dann stellen Sie sicher, dass Ihre html-Seite arbeitet in unicode:
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
Dann sollte der ganze trick. Keine Kodierung/Decodierung etc. notwendig, so stellen Sie sicher, dass alles, was ist unicode, und Sie sind auf der sicheren Seite.
Ich glaube nicht, dass Sie können. Diese "nästy chäräctörs" kann nicht sein", kodiert als ASCII, also müssen Sie wählen Sie eine andere Kodierung (UTF-8 oder Latin-1 oder Windows-1252 oder so).
Versuchen die
encode
- Methode von string.Gibt es mehrere Optionen in der
codecs
- Modul in python stdlib, je nachdem, wie Sie wollen, die erweiterte Zeichen behandelt:Hoffentlich einer von denen die Ihren Bedürfnissen gerecht wird. Es gibt mehr Informationen, die in der Python-codecs-Modul-Dokumentation.
Können Sie auch das Modul unicodedata (http://docs.python.org/library/unicodedata.html) in python zu konvertieren eine Menge der unicode-Werte in eine Ascii-Variante. IE fix die verschiedenen "s und so. Follow-up durch die encode () - Methode, und Sie können ganz sauber bis ein string.
Die Methode, die Sie vor allem, was aus der unicodedata ist normalisieren auf und übergeben Ihr die NFKC-flag.