xiaoshengemu 发表于 2020-8-27 08:50:38

Mac 文件读取的内容显示为机器码

>>> import os,sys
>>> fd = os.open( "/Users/xiaoshengemu/Desktop/dream.pages", os.O_RDWR)
>>> f=os.read(fd,12)###如果没有变量也无法直接读取###
>>> print(f)
b'PK\x03\x04\x14\x00\x00\x00\x08\x00\x84T'

sunrise085 发表于 2020-8-27 09:20:06

你试一下
print(f.decode())

xiaoshengemu 发表于 2020-8-27 21:32:43

sunrise085 发表于 2020-8-27 09:20
你试一下

>>> print(f.decode())
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
    print(f.decode())
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x84 in position 10: invalid start byte

报错

xiaoshengemu 发表于 2020-8-27 21:34:39

xiaoshengemu 发表于 2020-8-27 21:32
>>> print(f.decode())
Traceback (most recent call last):
File "", line 1, in


utf -8. 不是默认的储存格式吗。我也是新建打开的为什么会报错。 环境变量的问题吗

sunrise085 发表于 2020-8-27 21:40:04

xiaoshengemu 发表于 2020-8-27 21:32
>>> print(f.decode())
Traceback (most recent call last):
File "", line 1, in


你看看原文件编码格式是什么
在decode中添加编码格式参数就行了
例如:print(f.decode(encoding=''GBK"))#若编码格式是GBK的话

xiaoshengemu 发表于 2020-9-4 19:16:57

sunrise085 发表于 2020-8-27 21:40
你看看原文件编码格式是什么
在decode中添加编码格式参数就行了
例如:

print(red.decode(encoding="utf-8", errors="strict"))
{\rtf1\ansi\
返回了,没报错 但是还是乱码

bonst 发表于 2020-9-5 11:27:10

你看看这个pages能不能打开看看里面的编码方式

陈尚涵 发表于 2020-9-5 12:26:48

我觉得编码 可能会GB
2312?

xiaoshengemu 发表于 2020-9-6 21:32:46

bonst 发表于 2020-9-5 11:27
你看看这个pages能不能打开看看里面的编码方式

pages不知道但是RTF(Windows的TXT)是UTF-8的之后我直接用终端打开乱码

xiaoshengemu 发表于 2020-9-6 23:26:27

本帖最后由 xiaoshengemu 于 2020-9-8 21:33 编辑

问题解决了。
首先是rtf 的格式问题。在mac 下他的rtf 格式不等于txt 格式。改为txt 格式就可以了
具体方法 打开rtf 文件。格式>制作纯文本就可以了。这样就能在终端打开。
在python.
就是把最后的
print(ret.decode('utf','ignore'))
decode 第二个参数默认为 'strict',意为编码错误引起一个UnicodeError。ignore
页: [1]
查看完整版本: Mac 文件读取的内容显示为机器码