On Thu, May 09, 2013 at 10:21:39AM +0200, Diego Barrera wrote: > Il 08/05/2013 19:17, Marco Giusti ha scritto: > >On Wed, May 08, 2013 at 07:17:17PM +0200, Gollum1 wrote: > >>ok... inserito: > >> > >># coding=utf-8 > >> > >>come seconda riga, ed ora l'interprete lo esegue correttamente, anche > >>senza mettere u davanti alle stringhe. > >questo solo per un particolare allineamento planetario del sistema > >solare > Questa della codifica e' una cosa maledettamente oscura!
veramente non tanto. il problema è che non si sà in quale ambiente si lavora e con quale locale. prendi questo esempio: # coding=utf-8 print "città" se si lavora con locale utf-8 tutto sembra funzionare ma nel momento in cui il locale cambia, non funziona più. settando il locale di xterm ecco quello che ottengo: città questo perché le stringhe non sono altro che una sequenza di byte e l'encoding ci dice solo come devono essere interpretate. prendi la parola chance. per un italiano vuol dire probabilità di riuscita ma per un francese vuol dire fortuna, la stessa parola ha due significati differenti a seconda dell'interpretazione e lo stesso vale per le stringhe. la regola d'oro è lavorare sempre e solo con unicode dentro al programma e tradurre opportunamente quando il programma interagisce con l'esterno. qualcosa di simile. with open(filename) as fp: data = fp.read() data.decode(encoding) do_stuff_with(data) print data.encode(encoding) in realtà qui lo dico e qui lo nego ma con questa regola non si può sbagliare. per finire un paio di link illuminanti sull'argomento: http://www.joelonsoftware.com/articles/Unicode.html http://web.archive.org/web/20071019151008/http://boodebr.org/main/python/all-about-python-and-unicode#WHYNOPRINT ciao m. _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python