[Python] Tkinter e Canvas.create_text

Carlo C8E Miron carlo.miron a gmail.com
Mer 10 Feb 2010 11:37:30 CET


2010/2/9 Daniele.zambelli <daniele.zambelli a inwind.it>:
> In data martedì 09 febbraio 2010 12:58:15, Carlo C8E Miron ha scritto:
>> 2010/2/7 Daniele.zambelli <daniele.zambelli a inwind.it>:
>> > Io vorrei evitare di chiedere all'utente di anteporre la lettera "u" alle
>> > stringhe che contengono caratteri particolari. Come potrei fare?
>> l'unica maniera _sana_ con cui una libreria puo` interagire con
>> stringhe bytecode di encoding sconosciuto e`, appunto, farsi passare
>> l'encoding dell'utilizzatore. Quindi la tua API, laddove accetta un
>> parametro string, dovrebbe richiedere anche un secondo parametro
>> encoding. A questo punto e` molto piu` semplice e sano accettare
>> direttamente stringe unicode, non ti pare?
> Se ho capito bene, la cosa più semplice è che venga messa sempre la "u"
> davanti alla stringa.

Esatto.

> Non c'è un modo perché la funzione interpreti come unicode l'argomento che le
> viene passato?

Si`, il costruttore unicode(argomento). *MA* o gli passi il _giusto_
encoding (che dipende dall'utilizzatore della libreria, non da te)
come secondo elemento, o probabilmente riceverai il tuo amico
UnicodeDecodeError.

>>> unicode("à")
Traceback (most recent call last):
  File "<input>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 0: ordinal
not in range(128)
>>> unicode("à", "utf8")
u'\xe0'

> Grazie per la disponibilità.

Figuras, e` un piacere.
Consiglio la visione di::
P1: <http://www.pycon.it/conference/talks/python-e-unicode-ovvero-there-aint-no-such-thing-p>
P2: <http://www.pycon.it/conference/talks/unicode-python>
P3: <http://www.pycon.it/conference/talks/unicode-e-python-3>
(come vedi e` un argomento talmente importante e malconosciuto che
merita un talk per ogni edizione di pycon ;)

HTH, HAND
©
-- 
Carlo C8E Miron
Who'll Talk 'bout Unicode in P4? Solution Architect™ <= that's u"\u2122" :o)


Maggiori informazioni sulla lista Python