String Python 3:修剪多字节字符串
我需要修剪一个多字节字符串,以便剩余的字符在其原始编码中仍然可读(没有尾随字节标记) 示例-以下字符串长度为105个字符。但是它有194字节长。当将此字符串导入到字符限制为150的红移数据库列时,我得到一个溢出错误String Python 3:修剪多字节字符串,string,python-3.x,trim,multibyte,String,Python 3.x,Trim,Multibyte,我需要修剪一个多字节字符串,以便剩余的字符在其原始编码中仍然可读(没有尾随字节标记) 示例-以下字符串长度为105个字符。但是它有194字节长。当将此字符串导入到字符限制为150的红移数据库列时,我得到一个溢出错误 >>str="Негосударственное образовательное учреждение высшего профессионального образования Институт Уник-70264832" >>> len(str)
>>str="Негосударственное образовательное учреждение высшего профессионального образования Институт Уник-70264832"
>>> len(str)
105
>>> len(bytes(str, 'utf-8'))
194
如何安全地将字符串缩减为整个多字节字符,从而使整个字符串的长度不超过150字节
我知道以下内容适用于Python2,但我需要Python3的解决方案
def slice_multibyte(string, length):
#Loop while string is still longer than required length
while len(str(string.decode('utf-8'))) > length:
#Trim off one full utf-8 character (may be multibyte)
string = string.decode("utf-8")[:len(string.decode("utf-8"))-1].encode("utf-8")
return string
经过进一步思考,我提出了以下解决方案:
def trim_multibyte(string, length):
while len(bytes(string, 'utf-8')) > length:
string=string[:-1]
return string
我的方法是,只要字符串的字节版本长度超过指定的限制,就从字符串的末尾刮去一个字符。这似乎不适用于某些编码,如阿拉伯语或表情符号。我愿意接受其他建议!