我想将你的“任意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”和“”“.或者你可能不在乎,只要他们再次陷入僵局.