Python二进制读取采用何种编码机制?为何返回大于127的十进制数?
问题解答
你用二进制模式读取文件得到的不是任何文本编码,就是文件的原始字节值,每个输出的十进制整数对应文件中单个字节的8位二进制数的十进制表示。
关键说明:
- 你的代码用了
mode='br'(二进制只读模式),file.read()返回的是Python的bytes对象。遍历这个对象时,每个元素是0-255的整数,这完全是字节本身的数值,和编码无关——你只是直接读取了文件的原始二进制数据,没有做任何解码操作。 - PDF是二进制文件,不是纯文本文件。它里面除了部分用ASCII编码的关键字、文本内容外,还有大量非ASCII的二进制数据,比如压缩的页面数据流、字体文件、嵌入的图片等,这些数据本来就不是文本,自然会出现大于127的字节值。
简单说:你看到的不是某种编码的字符,就是文件里的原始字节,PDF这类二进制文件本来就包含大量非ASCII范围的字节。
内容的提问来源于stack exchange,提问作者Dileesha abilash
相关产品推荐
相关产品推荐

