mia stringa originale era una stringa unicode comunque (cioè preceduti da un u)
... che è il problema. Non era una "stringa", in quanto tale, ma un "oggetto Unicode". Contiene una sequenza di punti di codice Unicode. Questi punti di codice devono, ovviamente, avere una rappresentazione interna di cui Python è a conoscenza, ma qualunque cosa sia viene sottratta e vengono mostrate come entità \uXXXX
quando si utilizza print repr(my_u_str)
.
Per ottenere una sequenza di byte che un altro programma può comprendere, è necessario prendere quella sequenza di punti di codice Unicode e codificarla. Devi decidere sulla codifica, perché ce ne sono molte tra cui scegliere. UTF8 e UTF16 sono scelte comuni. Anche l'ASCII potrebbe esserlo, se si adatta. u"abc".encode('ascii')
funziona bene.
fare my_u_str = u"\u2119ython"
e poi type(my_u_str)
e type(my_u_str.encode('utf8'))
per vedere la differenza nei tipi: il primo è <type 'unicode'>
e il secondo è <type 'str'>
. (Sotto Python 2.5 e 2.6, comunque).
Le cose sono diverse in Python 3, ma dal momento che lo uso raramente starei parlando del mio cappello se provassi a dire qualcosa di autorevole.
Non è un anwer diretto, ma questo testo merita una lettura: [Il minimo assoluto Ogni sviluppatore di software assolutamente, positivamente deve sapere su Unicode e set di caratteri (nessuna scusa!)] (Http: //www.joelonsoftware. it/articles/Unicode.html) di Joel Spolsky – balpha
Programmazione orientata all'errore. Ora questo è un paradigma popolare :) – Amnon
nella mia esperienza conoscere le basi (come si sta facendo qui) è più efficace. – Amnon