On 2013-02-04 11:53, linedicons...@gmail.com wrote:
Ciao credo di non aver capito come si usa questa funzione e googlando
non ci ho capito molto riassumendo :

a = "òàçòòà"

a.encode('utf-8')


mi da come errore :

File "Untitled.py", line 1

SyntaxError: Non-ASCII character '\xc3' in file Untitled.py on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for
details

Cosa mi suggerite?

Di leggere http://www.python.org/peps/pep-0263.html e di leggere sulla differenza tra encode e decode.

Anzi, questa te la dico io, perché questo punto penso sia disastroso in Python e spiegato dolorosamente male: la "direzione" di encode (ovvero: cos'è "la realtà" e cos'è "la sua codifica") è che la realtà è unicode, una stringa è una sua codifica. Le uniche operazioni che hanno senso sono:

- encode: trasforma unicode in una stringa. unicode.encode(encoding) -> str - decode: trasforma una stringa in unicode. str.decode(encoding) -> unicode

Tutti gli altri metodi NON HANNO SENSO. Il problema è che esistono. unicode.decode() e str.encode() devono bruciare all'inferno. L'effetto di questi metodi è di effettuare prima l'operazione inversa in un encoding non definito (tipicamente ascii). Il risultato è il tuo programma che scoppia con...

    >>> u = u'€'
    >>> u
    u'\u20ac'
    >>> u.decode('utf8')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/usr/lib/python2.7/encodings/utf_8.py", line 16, in decode
        return codecs.utf_8_decode(input, errors, True)
UnicodeEncodeError: 'ascii' codec can't encode character u'\u20ac' in position 0: ordinal not in range(128)

perfetto no? un errore nell'encode quando chiedi il decode? Che idea del cazzo.

Leggi anche il pep 263, che riguarda cosa python deve capire quando usi caratteri non ascii nei sorgenti, che è un problema correlato ma non è lo stesso (infatti tu hai un errore di sintassi, non di codifica/decodifica).

--
Daniele Varrazzo - Develer S.r.l.
http://www.develer.com
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a