Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python无法解码字节字符串_Python_Encoding_Decode - Fatal编程技术网

Python无法解码字节字符串

Python无法解码字节字符串,python,encoding,decode,Python,Encoding,Decode,我在解码从一台计算机发送到另一台计算机的字节字符串时遇到问题。文件格式为PDF。我得到的错误如下: fileStrings[i] = fileStrings[i].decode() UnicodeDecodeError: 'utf-8' codec can't decode byte 0xda in position 648: invalid continuation byte 有没有办法去掉b''标记?我需要编译文件备份,但在发送之前我还需要知道它的大小(以字节为单位),我想我会通过解码每个

我在解码从一台计算机发送到另一台计算机的字节字符串时遇到问题。文件格式为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''的大小。

在Python中,bytestring用于原始二进制数据,字符串用于文本数据
decode
尝试将其解码为utf-8,这对txt文件有效,但对pdf文件无效,因为它们可能包含随机字节。不应尝试获取字符串,因为bytestring是为此而设计的。使用
len(data)
,可以像正常情况一样获得bytestring的长度。许多字符串操作也适用于bytestring,例如连接和切片(
data1+data2
data[1:3]


作为旁注,打印时的
b'
只是因为bytestrings的
\uuu str\uu
方法相当于
repr
。它不在数据本身中。

“字节大小”-解码将字节转换为字符,字符数与字节数不同<代码>∞是一个符号,但有3个字节:
b'\xe2\x88\x9e'
,或者UTF32中有8个字节。当我使用len()时,它不把b''计入大小吗?编辑:不,它不把b''计入len,作为和我有相同问题的人的旁注。谢谢你的回答@Aplet123,这很有帮助。