Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

UnicodeEncodeErrorについて

UnicodeEncodeErrorの発生

言語はpythonでgoogle colabで行っていました。
print関数で出力したときUnicodeEncodeErrorが発生するのでそれを防ぎたいです
自分は文章を入力してそれをord関数を使って文字列に置き換え数値にしてその数値に値を足したりかけたりを挟んでからchr関数を使って元の文章とは違う文章、いわゆる文章の暗号化をしているのですが、極たまにUnicodeEncodeErrorが起きます。値を変化させると治りますが、どのようにしたらエラーを起こさず出力できますか?

調べてみるとencode().decode()というものがありましたが使いかたがわかりません...

自分で試したこと

数値の値の変化、print関数で出力する際に独自の関数で処理しようとした(うまくいかず)

-調べたときに出てきた記事

https://qiita.com/ikuyukida/items/89e70d6516b5051dba7b
https://grapebanana.com/python-encoding-utf-8-7161/

0

1Answer

(値を足したりかけたりした結果、)↑こちらに書いてあることが起きているのだと思います。

予測するのも面倒なので、try/exceptでUnicodeEncodeErrorを拾って、値を変化させるのはどうでしょうか?

ord/chrが1文字ずつ行うのに対して、encode/decodeは、文字列全体を一度で行うイメージです。
encodeの結果の各バイトに「値を足したりかけたり」してdecodeすれば、変換後の文字列が得られます。
漢字のように1文字nバイトの場合があるので、「各バイト」にやってしまってよいかは、可逆性の暗号なら検討が必要です。

1Like

Comments

  1. try/except使ってみます。また、別口でencode/decodeも数値の値を足したりかけたりして暗号化できるか試してみます。教えていただきありがとうございます!

  2. 後学のために、結果をフィードバックしてもらえると、ありがたいと思います。

Your answer might help someone💌