我觉得自己是发帖的绝对白痴......
因此,我制作了一个文件套管,它读取文本文件,将其输出到加密文件,然后允许您将该文件转换回纯文本。我已经把文件写下来了,但是阅读它是个问题。
来自加密:
newf.write(bytes(result[0], "utf-8"))
newf.write(bytes('{[:|:;:|:]}'))
newf.write(bytes(result[1], "utf-8"))
newf.close()
还有解密:
name = fudder.askopenfilename(defaultextension =("Text Files","*.txt"),title = "Choose a file to decrypt.")
with open(name,'rb') as Usefile:
filecont = bytes(Usefile.read(),'utf-8')
它会出现此错误:
File "C:\STUFF\FILE.py", line 93, in <lambda>
self.fileO = Button(text = 'Decrypt File', command = lambda: cryptFile())
File "C:\STUFF\FILE.py", line 60, in cryptFile
filecont = Usefile.read()
File "C:\Program Files (x86)\Python35-32\lib\encodings\cp1252.py", line 23, in decode
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 68: character maps to <undefined>
答案 0 :(得分:0)
回溯显示,在 真实 代码中,错误发生在此行的cryptFile
函数中:
filecont = UseFile.read()
UnicodeDecodeError
表示UseFile
是一个类似文件的对象,可能在文本模式下打开而未指定编码。这意味着它将尝试使用cp1252的默认编码(在Windows上)来解码实际编码为UTF-8的文件。显然,当编解码器遇到任何未映射的字节(例如0x81
)时,这将失败。
解决方案是在打开文件时指定正确的编码:
with open(name, 'rt', encoding='utf-8') as Usefile:
filecont = UseFile.read()
这将导致filecont
成为unicode字符串对象。