【发布时间】:2020-11-30 15:19:30
【问题描述】:
我在解码必须从一台计算机发送到另一台计算机的字节字符串时遇到问题。文件为PDF格式。我收到错误消息:
fileStrings[i] = fileStrings[i].decode()
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xda in position 648: invalid continuation byte
关于如何删除 b' ' 标记的任何想法?我需要编译文件备份,但我还需要在发送它之前知道它的字节大小,我想我会通过解码每个字节字符串来知道它(适用于 txt 文件,但不适用于 pdf 文件..)
代码是:
with open(inputne, "rb") as file:
while 1:
readBytes= file.read(dataMaxSize)
fileStrings.append(readBytes)
if not readBytes:
break
readBytes= ''
filesize=0
for i in range(0, len(fileStrings)):
fileStrings[i] = fileStrings[i].decode()
filesize += len(fileStrings[i])
编辑:对于任何有同样问题的人,参数 len() 会给你不带 b'' 的大小。
【问题讨论】:
-
"size in bytes" - 解码会将字节转换为字符,字符数与字节数不同。
∞是一个符号,但 3 个字节:b'\xe2\x88\x9e',或 UTF32 中的 8 个字节。