2011-12-01 10 views
5

Esistono funzioni di stringa multibyte in PHP per gestire la stringa multibyte (ad esempio, script CJK). Per esempio, io voglio contare quante lettere in una stringa multi-byte utilizzando len la funzione in Python, ma restituire un risultato impreciso (cioè il numero di byte in questa stringa)Come gestire la stringa multibyte in Python

japanese = "桜の花びらたち" 
print japanese 
print len(japanese)#return 21 instead of 7 

Esiste un pacchetto o di una funzione come mb_strlen in PHP?

+2

Per completezza: Questo non è più un problema in Python 3 con supporto Unicode nativo su tutte le stringhe. – poke

risposta

9

Uso Unicode strings:

# Encoding: UTF-8 

japanese = u"桜の花びらたち" 
print japanese 
print len(japanese) 

Annotare il u davanti alla stringa.

Per convertire un bytestring in Unicode, utilizzare decode: "桜の花びらたち".decode('utf-8')

2

Prova convertendolo unicode primo:

print len(japanese.decode("utf-8")) 

dà 7. Si sta lavorando sulla stringa codificata utf-8, che ha infatti 21 byte.

+0

UnicodeEncodeError: il codec 'ascii' non può codificare i caratteri nella posizione 0-6: ordinale non compreso nell'intervallo (128) :( – hungneox

+1

scusa, la tua soluzione è troppo> _ <è colpa mia – hungneox

+0

Per rimuovere l'errore:
UnicodeEncodeError : 'ascii' codec non può codificare i caratteri in posizione 0-6: non ordinale gamma (128) :(
Aggiungere la seguente riga di hash:
# Encoding: UTF-8
agathodaimon

Problemi correlati