【发布时间】:2015-01-27 12:32:02
【问题描述】:
我为学校制作了一个聊天应用程序,有些人只是写入数据库。所以我的新项目是加密资源。所以我做了一个加密函数。
它工作正常,但是当我尝试在文件中写入加密数据时,我收到一条错误消息:
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
【问题讨论】:
-
您应该将您的答案作为单独的答案发布,并且不要包含在您的问题中。您也可以在接受时将您的问题标记为已解决。
-
我相信如果用户输入某些字符,解决方案仍然会崩溃,不是吗?实际上,我过去在创建完全相同的软件时也遇到过同样的问题,这很有趣。我用base64编码修复了它。我还支持密钥,这样如果两个人使用相同的密码,即使你运行服务器也无法解密!您可以运行 IMGUI.py 并通过在底部灰色框中键入 /connect 连接到聊天室,我的源代码在这里(如果您也想查看服务器端部分,请告诉我):digitaldiscrepancy.com/IMSafe.zip
标签: python file encryption encode