PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie kann ich einen Python-Unicode-String überprüfen, um zu sehen, ob es sich * tatsächlich * um richtigen Unicode handelt?

Es gibt einen Fehler in python 2.x ist das nur behoben python 3.x. Tatsächlich ist dieser Fehler sogar in OS Xs iconv (aber nicht in glibc).

Folgendes passiert:

Python 2.x erkennt UTF8-Ersatzpaare [1] nicht als ungültig (was Ihre Zeichenfolge ist)

Das sollte alles was benötigt wird:

foo.decode('utf8').encode('utf8')

Aber dank dieses Fehlers, den sie nicht beheben, werden keine Ersatzpaare erfasst.

Versuchen Sie dies in Python 2.x und dann in 3.x:

b'\xed\xbd\xbf'.decode('utf8')

Letzteres wird (korrekt) einen Fehler auslösen. Sie beheben es auch nicht im 2.x-Zweig. Siehe [2] und [3] für weitere Informationen

[1] https://www.rfc-editor.org/rfc/ rfc3629#section-4

[2] http://bugs.python.org/issue9133

[3] http://bugs.python.org/issue8271#msg102209