文件中的Python Unicode字节解码
我觉得自己是个十足的白痴 所以,我正在制作一个文件加密程序,它读取一个文本文件,将其输出到一个加密文件,然后允许您将该文件转换回纯文本。我得把文件写下来,但读起来是个问题 从加密中:文件中的Python Unicode字节解码,python,encryption,unicode,Python,Encryption,Unicode,我觉得自己是个十足的白痴 所以,我正在制作一个文件加密程序,它读取一个文本文件,将其输出到一个加密文件,然后允许您将该文件转换回纯文本。我得把文件写下来,但读起来是个问题 从加密中: newf.write(bytes(result[0], "utf-8")) newf.write(bytes('{[:|:;:|:]}')) newf.write(bytes(result[1], "utf-8")) newf.close() 还有解密: name = fudder.askopenfilename
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>
文件“C:\STUFF\File.py”,第93行,在
self.fileO=Button(text='Decrypt File',command=lambda:cryptFile())
文件“C:\STUFF\File.py”,第60行,在cryptFile中
filecont=Usefile.read()
文件“C:\Program Files(x86)\Python35-32\lib\encodings\cp1252.py”,第23行,解码
返回编解码器.charmap\u解码(输入、自身错误、解码表)[0]
UnicodeDecodeError:“charmap”编解码器无法解码位置68中的字节0x81:字符映射到
回溯显示,在您的real代码中,错误发生在此行的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字符串对象。查看编解码器。打开()。它应该允许您在打开文件时指定unicode编码,然后透明地读取其内容。这是python 2还是python 3?为什么您得到的错误不是来自您显示的代码?filecont=Usefile.read().decode('utf-8')
有效吗?您应该能够为这个问题编写一个可运行的示例。如果我们要测试一个解决方案,这意味着我们必须编写一个。。。