2011-12-01 109 views
5

PHP中有多字節字符串函數用於處理多字節字符串(例如:CJK腳本)。比如,我想通過使用蟒蛇len函數計算在多字節串多少個字母,但它返回一個不準確的結果(即在此字符串字節數)如何在Python中處理多字節字符串

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

是否有任何包裝或功能像PHP中的mb_strlen?

+2

對於完整性:這不再是在Python 3對所有字符串原生支持Unicode的問題。 – poke

回答

9

使用Unicode strings

# Encoding: UTF-8 

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

注意,在前面的字符串的u

要字節字符串轉換成Unicode,使用decode"桜の花びらたち".decode('utf-8')

2

嘗試將其轉換爲unicode第一:

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

給7.您正在使用的UTF-8編碼字符串,它確實有21個字節。

+0

UnicodeEncodeError:'ascii'編解碼器無法編碼0-6位置的字符:序號不在範圍內(128):( – hungneox

+1

對不起,您的解決方案也適用> _ <這是我的錯 – hungneox

+0

刪除錯誤:
UnicodeEncodeError :'ascii'編解碼器不能編碼0-6位置的字符:序號不在範圍內(128):(
加入以下散列行:
#編碼:UTF-8
agathodaimon