sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan kan jeg tjekke en Python unicode-streng for at se, at den *faktisk* er korrekt Unicode?

Der er en fejl i python 2.x, der kun er fast python 3.x. Faktisk er denne fejl endda i OS X's iconv (men ikke den glibc).

Her er, hvad der sker:

Python 2.x genkender ikke UTF8 surrogatpar [1] som værende ugyldige (hvilket er din karaktersekvens)

Dette skal være alt, hvad der er nødvendigt:

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

Men takket være den fejl, de ikke retter, fanger den ikke surrogatpar.

Prøv dette i python 2.x og derefter i 3.x:

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

Det vil kaste en fejl (korrekt) i sidstnævnte. De fikser det heller ikke i 2.x-grenen. Se [2] og [3] for mere information

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

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

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



  1. Kontrollerer for eksistensen af ​​indeks i PostgreSQL

  2. SQL multiple inserts med Python

  3. PHP MYSQL Indsæt data på arabisk sprog

  4. Tilføj ny RAC-instans manuelt