2011-12-01 33 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