sql >> Databáze >  >> RDS >> PostgreSQL

Jak mohu zkontrolovat řetězec unicode Pythonu, abych zjistil, že je *ve skutečnosti* správným Unicode?

Vyskytla se chyba v pythonu 2.x je to opraveno pouze v pythonu 3.x. Ve skutečnosti je tato chyba dokonce i v iconv OS X (ale ne v glibc).

Zde je to, co se děje:

Python 2.x nerozpozná náhradní páry UTF8 [1] jako neplatné (což je vaše sekvence znaků)

Toto by mělo být vše, co je potřeba:

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

Ale díky této chybě, kterou neopravují, nezachytí náhradní páry.

Zkuste to v pythonu 2.xa poté v 3.x:

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

V tom druhém vyhodí chybu (správně). Neřeší to ani ve větvi 2.x. Další informace naleznete v [2] a [3]

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

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

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



  1. Jaký je nejlepší způsob, jak uniknout neformátovým znakům v to_char společnosti Oracle?

  2. Příklady LOG() v SQL Server

  3. Django - Fulltextové vyhledávání - zástupný znak

  4. Perl DBI fetchall_hashref