Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.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 Unicode字节解码_Python_Encryption_Unicode - Fatal编程技术网

文件中的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')
有效吗?您应该能够为这个问题编写一个可运行的示例。如果我们要测试一个解决方案,这意味着我们必须编写一个。。。