在Python中如何处理多字节字符串

5

PHP中有多字节字符串函数来处理多字节字符串(例如:CJK脚本)。例如,我想通过使用Python的len函数来计算多字节字符串中有多少个字符,但它返回了一个不准确的结果(即这个字符串中的字节数)。

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

有没有类似于PHP中mb_strlen的包或函数?

3
完整性考虑:在 Python 3 中,所有字符串都具有原生 Unicode 支持,因此这不再是一个问题。 - poke
2个回答

9
使用Unicode字符串
# Encoding: UTF-8

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

注意字符串前面的 u
要将字节串转换为Unicode,请使用 decode"桜の花びらたち".decode('utf-8')

3

尝试先将其转换为 unicode

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

得到7。您正在处理utf-8编码的字符串,该字符串实际上有21个字节。


UnicodeEncodeError:'ascii'编解码器无法对位置0-6中的字符进行编码:序数不在范围内(128):( - hungneox
为了解决错误:<br/> UnicodeEncodeError: 'ascii'编解码器无法对位置0-6中的字符进行编码:序数不在范围内(128):(<br/>请添加以下散列行:<br/>

编码:UTF-8<br/>

- agathodaimon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接