[Python] Problemi un con la "è" su Eric4 Editor
Alessandro Dentella
sandro a e-den.it
Mer 18 Nov 2009 09:57:45 CET
On Wed, Nov 18, 2009 at 08:12:18AM +0100, wipedisk wrote:
> Il giorno Tue, 17 Nov 2009 22:03:19 +0100
> Marco Beri <marcoberi a gmail.com> ha scritto:
>
> > Personalmente in tutti i miei file in cima metto sempre:
> >
> > # -*- coding: utf-8 -*-
> >
> > E cosi` dormo sonni (quasi) tranquilli.
> >
> > Ciao.
> > Marco.
>
> quindi questa soluzione sarebbe valida per qualsiasi programma scritto
> in Python?
No.
1. La codifica dichiarata deve corrispondere alla codifica realmente
utilizzata
il codice::
# coding: utf-8
print u'è'
encodato latin1, produce questo errore:
sandro a bluff:/tmp$ python latin.py
UnicodeDecodeError: 'utf8' codec can't decode byte 0xe8 in position 0: unexpected end of data
la stessa lettera 'è' scritta in utf-8 ed in latin1 appare così::
sandro a bluff:/tmp$ od -bc e-utf8.py
0000000 303 250
303 250
0000003
sandro a bluff:/tmp$ od -bc e-latin1.py
0000000 350
350
0000002
2. la codifica dichiarata è limitata... al codice cui si riferisce, non a
ciò che viene da file, template, database, getmessage.
Poi ricorda che print u'è' e print 'è' sono cose diverse::
# coding: utf-8
print len('è'), 'è'
print len(u'è'), u'è'
produce:
2 è
1 è
ciò detto il codice scritto sopra eseguito in un terminale gnome (utf-8)
produce il codice riportato mentre in emacs mi da un errore di encoding
perchè cerca di encodarlo in ascii nel buffer di uscita di emacs (che però è
utf-8...) non sono ancora riuscito a capire come configurarlo per evitare
l'errore.
sandro
*:-)
--
Sandro Dentella *:-)
http://sqlkit.argolinux.org SQLkit home page - PyGTK/python/sqlalchemy
Maggiori informazioni sulla lista
Python