[Python] Encoding e setdefaultencoding

Daniele Varrazzo piro a develer.com
Mar 13 Nov 2007 16:04:15 CET


Cristian Re ha scritto:
> Ti ringrazio per la risposta ma continuo ad avere dubbi sul metodo da 
> utilizzare.
> Mettiamo ad esempio che io debba leggere un file codificato in 'latin-1' 
> se non tocco l'encoding alcuni caratteri non saranno riconosciuti perché 
> non presenti nel set di default di python. Per cui come faccio ad 
> impostare l'encoding del file. Ad esempio se devo leggere un file di 
> testo posso impostare in qualche modo che il contenuto del file che 
> andrò a leggere sarà codificato in un certo modo?

Il contenuto del file che leggi, lo gestisci con le stringhe (str) o con 
unicode lato Python?

Se lo gestisci in unicode, codecs.open() ti permette di convertire i dati 
trasparentemente in unicode in lettura e (ad esempio) in latin1 in scrittura.

Per quanto riguarda i database, credo dipenda dal driver. Per esempio con 
psycopg2 (l'unico di cui ho esperienza diretta a proposito) devi specificare 
in che encoding gli parli con connection.set_client_encoding('LATIN1') e in 
che modo vuoi ricevere le stringhe con 
extensions.register_type(extensions.UNICODE)

Se gestisci questi dati con stringhe normali, allora non ho capito che tipo di 
problema hai né quando si verifica. un esempio concreto?

Problema extra, che non so se hai (io l'ho avuto): se lavori con Windows tu 
_credi_ di stare usando il latin1, ma non è così :) stai lavorando in cp1252 e
i problemi li incontri regolarmente col simbolo dell'euro.

Ciao!

-- 
Daniele Varrazzo - Develer S.r.l.
http://www.develer.com


Maggiori informazioni sulla lista Python