我想将你的“任意unicode字符串”拆分成300字节的大小块,而不会破坏任何字符.这些字符串将被写入一个需要使用unicode_string.encode(“utf8”)的utf8的套接字.我不想破坏任何角色.我该怎么做?
解决方法
UTF-8专为此而设计.
- def split_utf8(s,n):
- """Split UTF-8 s into chunks of maximum length n."""
- while len(s) > n:
- k = n
- while (ord(s[k]) & 0xc0) == 0x80:
- k -= 1
- yield s[:k]
- s = s[k:]
- yield s
没有测试.但是你找到一个分割的地方,然后回溯到你到达一个角色的开头.
但是,如果用户可能希望看到一个单独的块,则可能需要拆分图形集群边界.这显然更复杂,但不是棘手的.例如,在“é”中,您可能不想拆分“e”和“”“.或者你可能不在乎,只要他们再次陷入僵局.