我为学校制作了一个聊天应用,有些人只是写进了数据库。所以我的新项目是加密资源。所以我做了一个加密功能。
它工作正常,但是当我尝试在文件中写入加密数据时,我收到错误消息:
File "C:\Python34\lib\encodings\cp1252.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\x94' in position 0:
character maps to <undefined>
如何解决这个问题?
完整代码:
def encrypts(data, step):
newdata = ""
i = 0
while (len(data) > len(step)):
step += step[i]
i += 1
if (len(data) < len(step)):
step = step[:len(data)]
for i in range(len(data)):
a = ord(data[i])
b = ord(step[i])
newdata += chr(a+b)
return newdata
file = open("C:/Users/David/Desktop/file.msg","wb")
file.write(encrypts("12345","code"))
现在,我终于解决了我的问题。创建的ASCII字符不存在。所以我改变了我的职能:
def encrypts(data, step):
newdata = ""
i = 0
while (len(data) > len(step)):
step += step[i]
i += 1
if (len(data) < len(step)):
step = step[:len(data)]
for i in range(len(data)):
a = ord(data[i])
b = ord(step[i])
newdata += chr(a+b-100) #The "-100" fixed the problem.
return newdata
答案 0 :(得分:0)
您在编码文件时遇到的问题。
试一试:
inputFile = codecs.open('input.txt', 'rb', 'cp1251') outFile = codecs.open('output.txt', 'wb', 'cp1251')
答案 1 :(得分:0)
打开文件进行写入或保存时,请尝试将“b”字符添加到打开模式。所以而不是:
open("encryptedFile.txt", 'w')
使用
open("encryptedFile.txt", 'wb')
这会将文件打开为二进制文件,当您按照自己的方式修改字符时这是必要的,因为您有时会将这些字符设置为ASCII范围之外的值。