2016-09-20 6 views
1

ここに同じコードで2番目の投稿があります。しかし今回は別の問題です。それはたびに頻繁に起こりますが、それは理由について私に悩まされます。これは、出力とエラーです:ファイルを暗号化してファイルに書き込もうとすると、PythonでUnicodeEncodeErrorが発生する

Phrase to be encrypted: Hello world 
Shift keyword, Word only: Hello 

:-) :-) :-) Encrypting Phrase 10%... :-) :-) :-) 
:-) :-) :-) Encrypting Phrase 20%... :-) :-) :-) 
:-) :-) :-) Encrypting Phrase 30%... :-) :-) :-) 
:-) :-) :-) Encrypting Phrase 40%... :-) :-) :-) 
:-) :-) :-) Encrypting Phrase 50%... :-) :-) :-) 
:-) :-) :-) Encrypting Phrase 60%... :-) :-) :-) 
:-) :-) :-) Encrypting Phrase 70%... :-) :-) :-) 
:-) :-) :-) Encrypting Phrase 80%... :-) :-) :-) 
:-) :-) :-) Encrypting Phrase 90%... :-) :-) :-) 
:-) :-) :-) Encrypting Phrase 100%... :-) :-) :-) 
:-) :-) :-) Checking Security of encrypted phrase.... :-) :-) :-) 
:-) :-) :-) Done! :-) :-) :-) 

Here is your Encrypted Phrase:I?j!Qgea:~~[ 
Traceback (most recent call last): 
    File "C:\Users\Isaac Scarisbrick\Downloads\Keyword Cipher_1.py", line 60, in <module> 
    file.write (str(result) + " " + (Cipher)) 
    File "C:\Users\Isaac Scarisbrick\AppData\Local\Programs\Python\Python35-32\lib\encodings\cp1252.py", line 19, in encode 
    return codecs.charmap_encode(input,self.errors,encoding_table)[0] 
UnicodeEncodeError: 'charmap' codec can't encode characters in position 2-3: character maps to <undefined> 

そして、これは私のコードです:これは私が私のAレベルに設定されているタスクトン少し拡張したものであるとして

import random 

phrase = input('Phrase to be encrypted: ') 
shift_key = input("Shift keyword, Word only: ") 

Encryption_Base = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890,./;:<>?'@#~]}[{=+-_)(*&^%$£!`¬\|" 
key_encryption = random.randint(0, 94) 
Cipher = '' 

for c in shift_key: 
     if c in Encryption_Base: 
      Cipher += Encryption_Base[(Encryption_Base.index(c)+key_encryption)%(len(Encryption_Base))] 

def Keyword_Encryption(key, phrase): 

    if len(phrase) > len(key): 
     while len(phrase) > len(key): 
      length_to_add = len(phrase) - len(key) 
      key = key + key[0:length_to_add] 

    elif len(phrase) < len(key): 
     while len(phrase) < len(key): 
      length_to_sub = len(key) - (len(key) - len(phrase)) 
      key = key[0:length_to_sub] 

    else: 
     pass 

    shifted_phrase = '' 
    for i in range(len(phrase)): 
     new_letter = (ord(key[i]) - 96) + (ord(phrase[i]) - 96) + 96 
     if new_letter > 1220: 
      new_letter = chr(new_letter - 26) 

     else: 
      new_letter = chr(new_letter) 

     shifted_phrase = shifted_phrase + new_letter 
    return shifted_phrase 

result = Keyword_Encryption(Cipher, phrase) 
print (" ") 
print (":-) " * 3 + "Encrypting Phrase 10%... " + ":-) " * 3) 
print (":-) " * 3 + "Encrypting Phrase 20%... " + ":-) " * 3) 
print (":-) " * 3 + "Encrypting Phrase 30%... " + ":-) " * 3) 
print (":-) " * 3 + "Encrypting Phrase 40%... " + ":-) " * 3) 
print (":-) " * 3 + "Encrypting Phrase 50%... " + ":-) " * 3) 
print (":-) " * 3 + "Encrypting Phrase 60%... " + ":-) " * 3) 
print (":-) " * 3 + "Encrypting Phrase 70%... " + ":-) " * 3) 
print (":-) " * 3 + "Encrypting Phrase 80%... " + ":-) " * 3) 
print (":-) " * 3 + "Encrypting Phrase 90%... " + ":-) " * 3) 
print (":-) " * 3 + "Encrypting Phrase 100%... " + ":-) " * 3) 
print (":-) " * 3 + "Checking Security of encrypted phrase.... " + ":-) " * 3) 
print (":-) " * 3 + "Done! " + ":-) " * 3) 
print (" ") 
print ('Here is your Encrypted Phrase:' + (result) + (Cipher)) 

file = open("Encrypted.txt", "w") 
file.write (str(result) + " " + (Cipher)) 
file.close() 

は、事前にどうもありがとうございましたクラス。ここには、Pythonで作られた暗号化プログラムがあったので、これまでに見たようなコードがいくつかあります。ありがとうございました:)

EDIT:このことができた場合、それは時々あまりにも、このエラーがスローされます。

Phrase to be encrypted: Hello World 
Shift keyword, Word only: Hello 
Traceback (most recent call last): 
    File "C:\Users\Isaac Scarisbrick\Downloads\Keyword Cipher_1.py", line 42, in <module> 
    result = Keyword_Encryption(Cipher, phrase) 
    File "C:\Users\Isaac Scarisbrick\Downloads\Keyword Cipher_1.py", line 37, in Keyword_Encryption 
    new_letter = chr(new_letter) 
ValueError: chr() arg not in range(0x110000) 
+0

このエラーを出す暗号化しようとしているフレーズの例を教えてください。あなたが外国のユニコード文字を暗号化しようとしている可能性があります。 – PrestonM

+0

'#coding:cp1252'をソースの先頭に追加すると、プログラムが実行されるようです。面白い姓: –

+0

乾杯男。それを置いてはいけません。おっとっと。 – LineDot

答えて

0

わかりました。だからこの記事を見ている人は誰でも知っている。あなたがやらなければならないことは、一番上に

import codecs

を入れて、書き込み括弧内の、あなたは、ファイルの種類を書く

encoding = "utf8"

されます。私はあなたの問題を助けてくれて、私がこの結論に至るのを助けてくれたすべてに感謝したいと思います:-)。

関連する問題