[Python] Encoding e setdefaultencoding

Cristian Re cristian.re a gmail.com
Mar 13 Nov 2007 18:20:21 CET


Ecco un esempio che non quadra.

Ora costruiamo la stinga se scrivo:

str = 'perché è così?'

da quel che ho capito ho creato una stringa codificata con codifica
microsoft "cp1252" giusto?
per cui se, sempre da console, scrivo "str" e dò invio l'output è ascii
(codifica di default di python) ed il risultato è:
'perch\x82 \x8a cos\x8d?'

mentre se scrivo "print str" la scritta viene visualizzata come quando la
digito perché l'output è microsoft per cui "cp1252" ok?

Se invece volessi crearmi una stringa unicode dovrei utilizzare "unicode"
specificando che l'input è "cp1252" ma se faccio così:

"str=unicode('perché è così', 'cp1252')"

mi da questo errore:
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python25\lib\encodings\cp1252.py", line 15, in decode
    return codecs.charmap_decode(input,errors,decoding_table)
UnicodeDecodeError: 'charmap' codec can't decode byte 0x8d in position 12:
character maps to <undefined>

mentre se scrivo "str=unicode('perché è così', 'latin-1')" non da errore.
Non ci sto capendo più nulla però.

ora se ridigito da console "str" l'output sembra una stringa unicode:
u'perch\x82 \x8a cos\x8d'

ma se scrivo print str da questo errore nel file "cp850":
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python25\lib\encodings\cp850.py", line 12, in encode
    return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode character u'\x82' in
position 5: character maps to <undefined>


Mi sono perso anche nella spiegazione, latin-1, cp1252, cp850... non so più
nemmeno cosa stavo chiedendo.
Avete idea di qualche sito che spiega bene e semplicemente la codifica con
python?

Grazie





Il 13/11/07, Cristian Re <cristian.re a gmail.com> ha scritto:
>
> ora non ho collegato il modem. quando provo ve lo giro.
> Grazie
>
>
> Il 13/11/07, Daniele Varrazzo <piro a develer.com> ha scritto:
> >
> > Cristian Re ha scritto:
> > > In effetti il problema principale era sulla lettura di file che, se
> > > contenevano caratteri non ascii, creavano problemi. Noi utilizzavamo
> > la
> > > open built-in di python. Il problema relativo al db era conseguente ma
> > > credo che così si risolva.
> > >
> > > Un altro problema sulla codifica l'ho utilizzando Gammu per
> > > interfacciarmi con dei modem GSM in quanto non riesco a gestire la
> > > codifica degli SMS in ingresso se contengono caratteri accentati ma
> > non
> > > saprei quanti hanno mai provato ad utilizzare Gammu.
> > >
> > > Se qualcuno dovesse conoscere Gammu in pratica non riesco a gestire la
> >
> > > codifica del testo nella GetSMS della StateMachine.
> >
> > Ne so poco in effetti.
> >
> > Puoi mandarci un repr() di una stringa ottenuta da un SMS contenente
> > caratteri
> > accentati/simbolo euro/caratteri giapponesi?
> >
> > Se mi dai un numero di cellulare te lo mando io :)
> >
> > --
> > Daniele Varrazzo - Develer S.r.l.
> > http://www.develer.com
> > _______________________________________________
> > Python mailing list
> > Python a lists.python.it
> > http://lists.python.it/mailman/listinfo/python
> >
>
>
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: http://lists.python.it/pipermail/python/attachments/20071113/77a7ea2a/attachment.html


Maggiori informazioni sulla lista Python