首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python加密错误"UnicodeEncodeError“

Python加密错误"UnicodeEncodeError“
EN

Stack Overflow用户
提问于 2021-09-29 23:26:57
回答 1查看 77关注 0票数 0

我试着创建一个模拟寄存器的代码。

例如,用户选择“创建帐户”,并将用户名和密码存储在名为username.txt的txt中。

这部分工作,但现在我尝试加密密码,但我获得:

“文件输入第19行,在encode return codecs.charmap_encode(input,self.errors,encoding_table) UnicodeEncodeError:'charmap‘编解码器无法对位置2中的字符'\x95’进行编码:字符映射到‘undefined’。

但如果我用我的程序长时间地加密这些工作

我的代码:

代码语言:javascript
复制
# coding: utf-8

import colorama
from colorama import Fore, Back, Style
import os
import time
import platform
import shutil
import sys
import _socket
import socket
from Cryptage import *

#-------------------------------------------------------------------------------------------------

cle= open("cle.txt","r", encoding="utf-8")
cle=cle.read()
colorama.init(autoreset = True)
Boucle = 1
Pseudo = ""
encoded_string = ''

#-------------------------------------------------------------------------------------------------


def Clean():
    if platform.system() == "Windows":
        os.system("cls")
    elif platform.system() == "Linux":
        os.system("clear")

#-------------------------------------------------------------------------------------------------

def Acceuil():

    Clean()
    print(Fore.BLUE+"<===ACCEUIL===>")
    print(Fore.BLUE+"---------------------------------------------------------------------")
    print(Fore.BLUE+"1. Se connecter")
    print(Fore.BLUE+"2. S'inscrire")
    print(Fore.BLUE+"3. Quitter")
    print(Fore.BLUE+"---------------------------------------------------------------------")
    choix = input()

    if choix =='1':
        Connexion()
    
    elif choix =='2':
        Register()
    
    elif choix =='3':
        Clean()
        print("Fin du programme...")
        time.sleep(2.4)
        sys.exit()

    else:
        Clean()
        print(Fore.RED + "invalide")
        colorama.init(autoreset = True)

    #-------------------------------------------------------------------------------------------------

def Register():

    Clean()

    print(Fore.BLUE+"<===INSCRIPTION===>")
    print(Fore.BLUE+"---------------------------------------------------------------------")
    Pseudo, MDP = input(Fore.BLUE+"Pseudo, MDP: ").split()


    TxtUser = "{Pseudo2}.txt".format(Pseudo2=Pseudo)
    CheminBase = "C:\\Users\\yuris\\Desktop\\Python\\GestionDeCompte\\{TxtUser2}".format(TxtUser2=TxtUser)
    CheminArriver = "C:\\Users\\yuris\\Desktop\\Python\\GestionDeCompte\\Users\\{TxtUser2}".format(TxtUser2=TxtUser)

    MDPcrypted = encode(cle, MDP)

if os.path.exists(CheminArriver):

    Clean()
    print(Fore.RED+"Le Pseudo",Fore.RED+Pseudo,Fore.RED+"Existe deja")
    input()

 
else:

    NewUser = open(TxtUser,"x")
    NewUser.close()

    NewUser = open(TxtUser,"a")
    NewUser.write("Pseudo: ")
    NewUser.write(Pseudo)
    NewUser.write("! ")

    NewUser.write("MDP: ")
    NewUser.write( MDPcrypted)
    NewUser.write("!")
    NewUser.close()

    shutil.move(CheminBase,CheminArriver)
    print(Fore.BLUE+"Déplacement vers connexion...")
    time.sleep(2.4)
    Connexion()

        #-------------------------------------------------------------------------------------------------

def Connexion():

    Clean()
    print(Fore.BLUE+"<===CONNEXION===>")
    print(Fore.BLUE+"---------------------------------------------------------------------")
    Pseudo, MDP = input(Fore.BLUE+"Pseudo, MDP: ").split()
    print(Fore.BLUE+"---------------------------------------------------------------------")

    TxtUser = "{Pseudo2}.txt".format(Pseudo2=Pseudo)
    CheminArriver = "C:\\Users\\yuris\\Desktop\\Python\\GestionDeCompte\\Users\\{TxtUser2}".format(TxtUser2=TxtUser)

    if os.path.exists(CheminArriver) :

        MDPregister = "{MDP2}!".format(MDP2=MDP)
        UserConnect = open(CheminArriver,"r")
    
        for ligne in  UserConnect:
            if MDPregister in ligne:
                MenuPrincipal()
            else:
                print(Fore.RED+"Le Pseudo ou le MDP est invalide")
                input()
 
    else:
        print(Fore.RED+"Le Pseudo ou le MDP est invalide")
        input()

#-------------------------------------------------------------------------------------------------

def MenuPrincipal():
    while Boucle != 0:

        Clean()
   
        print(Fore.GREEN+"Bienvenue",Fore.GREEN+Pseudo)
        input()
 
#-------------------------------------------------------------------------------------------------

while Boucle != 0:

    Acceuil()
    print("")

这是我的密码加密程序:

代码语言:javascript
复制
# coding: utf-8
# vigenere cipher

#--------------------------------------------------------------------------------

cle= open("cle.txt","r", encoding="utf-8")
cle=cle.read()

#--------------------------------------------------------------------------------
        
def encode(cle, string):
    encoded_chars = []
    for i in range(len(string)):
        key_c =cle[i % len(cle)]
        encoded_c = chr(ord(string[i]) + ord(key_c) % 256)
        encoded_chars.append(encoded_c)
    encoded_string = ''.join(encoded_chars)
    return encoded_string

def decode(cle, string):
    encoded_chars = []
    for i in range(len(string)):
        key_c = cle[i % len(cle)]
        encoded_c = chr((ord(string[i]) - ord(key_c) + 256) % 256)
        encoded_chars.append(encoded_c)
    encoded_string = ''.join(encoded_chars)
    return encoded_string

(回复:修改后的程序)

EN

回答 1

Stack Overflow用户

发布于 2021-09-29 23:47:19

您的第一行应该是# coding: utf-8coding=utf-8 (取出en),或者指定何时读取clecle = open("cle.txt", "r", encoding="utf-8")。您正在使用与utf-8不同的编解码器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69384354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档