[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