[Python] Supporto ai caratteri accentati.

Gollum1 gollum1.smeagol1 a gmail.com
Mer 8 Maggio 2013 18:58:40 CEST


Il 08 maggio 2013 18:49, Daniele Varrazzo <piro a develer.com> ha scritto:
> On 2013-05-08 16:57, Gabriel Battaglia (Kriyaban) wrote:
>
>> GB: attenzione, momento quasi storico... Tento la mia prima risposta
>> in lista!
>
>
> Rullo di tamburi... :)
>
>
>> Prova a mettere una u davanti alla stringa da passare:
>> u"Perchè così?"
>> u"Perchè di sì!"
>
>
> Questo è giusto, ma non basta. In che encoding è salvato il file? Se è in
> latin1 la tua i accentata sarà rappresentata dal byte 0xEC; se è in utf8
> sarà la coppia di byte 0xC3 0xAC. Se non si conosce questa informazione
> diventa difficile sapere chsa voglia dire 0xEC: per esempio interpretata in
> un encoding russo (koi8-r) 0xEC rappresenta la lettera "Л" (la L maiuscola
> in cirillico). E così via, incasinando...
>
> Il "commento magico" in cima ai sorgenti Python serve a specificare cosa
> vogliono dire i caratteri con valore ascii > 127 nel sorgente. Senza di
> quello toccherebbe tirare a indovinare (come fa Notepad, regolarmente
> scazzando <http://www.hoax-slayer.com/bush-hid-the-facts-notepad.html>)
> mentre Python preferisce tirare un'eccezione nel dubbio.

il mio file risulta essere salvato in utf-8 (così almeno mi indica
kate, quando gli dico di salvare il file, e nelle sue impostazioni è
settato come set utf-8).

$file programma.py

Python script, UTF-8 Unicode text executable

quindi è utf-8 anche per il sistema.

se faccio partire l'interprete in konsole, e digito

>>>print "questa è una prova"
questa è una prova

ottengo, quindi senza errori.

se in konsole lancio il mio programma.py:

$ ./programma.py
SyntaxError: Non-ASCII character '\xc3' in file ./programma.py

anche mettendo u davanti alla stringa.

ora vado a leggermi http://www.python.org/peps/pep-0263.html come è
suggerito nella riga che indica l'errore.
(non l'avevo notato prima di scrivervi)

Byez
--
Gollum1
Tesssssoro, dov'é il mio tessssoro...


Maggiori informazioni sulla lista Python