[Gfoss] postgres, spalialite, python e Collation

Niccolo Rigacci niccolo a rigacci.org
Mer 5 Dic 2012 12:25:53 CET


On Wed, Dec 05, 2012 at 12:13:25PM +0100, Luca Mandolesi wrote:
> 
> quale codifica dare al codice python?


Mi associo a quelli che con Python e Unicode e UTF-8 hanno 
battuto il naso!

Il charset con cui scrivi il sorgente non è fondamentale, sebbene 
sia meglio usare UTF-8 e dichiararlo con lo pseudo-commento 
all'inizio del file stesso.

La parte importante e complicata è gestire correttamente il 
charset durante la vita delle variabili nel programma.

Se può aiutare qui ho preso un po' di appunti, anche se gli 
esempi sono su MySQL credo che la logica sia la stessa con 
PostgreSQL:

https://www.rigacci.org/wiki/doku.php/doc/appunti/prog/python_unicode

In pratica devi sempre assicurarti che le variabili durante la 
vita del programma siano type() = unicode.

Qusto ha il vantaggio - ad esempio - che la lunghezza in una 
stringa della "a accentata" sia 1 carattere, indipendentemente 
dalla codifica (in UTF-8 sono due byte).

Quindi devi stare attento quando leggi dal database a 
decodificare le stringhe. Se hai fatto tutto per bene avviene in 
automatico, altrimenti ti trovi una stringa type() = str e quindi 
la devi forzare con pippo = pippo.decode('utf-8').

Infine devi stare attento a codificare (in utf-8, mi raccomando!) 
le stringhe quando ne fai l'output (a schermo, nel database, su 
file, ecc.).

Spero di non averti confuso ulteriormente!

-- 
Niccolo Rigacci - http://www.rigacci.net/
Firenze - Italy
Tel. Office: +39-055-9331021, Mobile: +39-327-5619352


Maggiori informazioni sulla lista Gfoss