Frage

Ich sehe einige Frameworks wie Django mit Unicode überall so scheint es, wie es eine gute Idee sein könnte.

Auf der anderen Seite scheint es wie ein großer Schmerz alle haben diese extra ‚u überall herum schwebt.

Wie wird ein Problem sein, wenn ich das nicht tun?

Gibt es Probleme, die auftauchen, wenn ich dies tun, tun?

Ich verwende Pylone jetzt als meinen Rahmen.

War es hilfreich?

Lösung

In Python 3 sind alle Strings Unicode. So können Sie sich darauf vorbereiten, indem u'' Strings überall Sie brauchen, und dann, wenn Sie schließlich zu Python Upgrade 3 unter Verwendung des 2to3 Tool alle us verschwinden. Und Sie werden in einer besseren Position, weil Sie bereits Ihren Code mit Unicode-Strings getestet werden.

Siehe

Andere Tipps

Sie können die u'' in Python vermeiden 2.6, indem Sie:

from __future__ import unicode_literals

Das wird 'string literals' machen Unicode-Objekte zu sein, so wie es in Python 3 ist;

  

Wie wird ein Problem sein, wenn ich das nicht tun?

Ich bin ein Bewohner des Westens in Japan leben, also habe ich aus erster Hand gesehen, was benötigt wird, mit Nicht-ASCII-Zeichen zu arbeiten. Das Problem, wenn Sie nicht Unicode-Strings verwenden ist, dass der Code eine Frustration zu den Teilen der Welt, die andere etwas verwenden sein wird als A-Z. Unsere Firma hatte viel Frustration immer bestimmte Web-Software japanische Schriftzeichen zu tun, ohne ein totales Durcheinander daraus zu machen.

Es dauert ein wenig Aufwand für englische Muttersprachler zu schätzen, wie groß Unicode ist, aber es ist wirklich ein tolles Stück Arbeit Computer zugänglich für alle Kulturen und Sprachen zu machen.

"Gotchas":

  1. Stellen Sie sicher, dass Ihre Ausgabe Web-Seiten, die die Codierung verwendeten angeben richtig (zum Beispiel Content-Encoding-Header verwendet wird), und dann alle Strings richtig am Ausgang Unicode kodieren. Python 3 Unicode-Strings ist eine große Verbesserung dieses Recht zu tun.

  2. Sie alles mit Unicode-Strings, und nur für eine bestimmte Codierung im letzten Moment konvertieren, wenn der Ausgang zu tun. Andere Sprachen wie PHP, sind Fehler anfällig, wenn Unicode in z.B. Manipulation UTF-8 bilden. Sagen Sie bitte eine Unicode-Zeichenfolge gestutzt haben. Wenn es intern in UTF-8-Form ist, gibt es ein Risiko, das Sie ein Multi-Byte-Zeichen durch halbwegs abhacken könnten, in Müll Ausgang führen. Pythons Verwendung von Unicode-Strings intern macht es schwieriger, diese Fehler zu machen.

Mit Unicode intern ist ein guter Weg, um Probleme mit nicht-ASCII-Zeichen zu vermeiden. Wandeln Sie an den Grenzen der Anwendung (eingehende Daten in Unicode, ausgehende Daten in UTF-8 oder was auch immer). Pylons können in vielen Fällen für Sie die Konvertierung tun: z Controller können sicher Unicode-Strings zurückgeben; SQLAlchemy Modelle können Unicode-Spalten deklarieren.

In Bezug auf Stringliterale im Quellcode: der u-Präfix ist in der Regel nicht erforderlich. Sie können sicher str Objekte enthält ASCII mit Unicode-Objekte mischen. So stellen Sie sicher alle Ihre Stringliterale sind entweder reine ASCII oder sind u „Unicode“.

scroll top