Dav*_* L. 3 python encoding byte utf-8 character-encoding
我有一个Python项目,我在一个comm协议中有一个固定的字节长度文本字段(NOT FIXED CHAR-LENGTH FIELD),它包含一个utf-8编码,NULL填充,NULL终止字符串.
我需要确保字符串适合固定的字节长度字段.因为utf-8是一个可变宽度编码,所以这使得使用强力来以固定的字节长度dicey截断字符串,因为你可能会留下一部分多字节字符悬挂在最后.
是否有一个模块/方法/函数/等可以帮助我将utf-8可变宽度编码的字符串截断为固定的字节长度?
做空填充和终止的东西将是一个奖励.
这似乎是一个已经被破解的坚果.如果它已经存在,我不想重新发明一些东西.
让Python检测并消除任何部分或无效字符.
byte_str = uni_str.encode('utf-8')
byte_str = byte_str[:size].decode('utf-8', 'ignore').encode('utf-8')
Run Code Online (Sandbox Code Playgroud)
这是因为UTF-8规范对字符的第一个字节中的后续字节数进行编码,因此可以很容易地检测到丢失的字节.
编辑:这是使用从另一个问题中提取的随机东方字符串的代码的结果.第一个数字是最大大小,第二个是UTF-8字符串中的实际字节数.
45 45 ???????????????
44 42 ??????????????
43 42 ??????????????
42 42 ??????????????
41 39 ?????????????
40 39 ?????????????
39 39 ?????????????
38 36 ????????????
37 36 ????????????
36 36 ????????????
35 33 ???????????
34 33 ???????????
33 33 ???????????
32 30 ??????????
31 30 ??????????
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1430 次 |
| 最近记录: |