前提・実現したいこと
ここに質問の内容を詳しく書いてください。
Python初心者です。
Python 3.6.5でUTF_8からShift-JISに変換してわざと文字化け文字を作成するプログラムを組んでいます。
もう仕組み自体は大体できており、後は他のエラーを修正するだけで完成しそうなのですが、そのエラーの修正が終わると今度は別のエラーが出てしまいどうしても自力で解決できませんした。
ソフト自体は起動できますが、実行するとエラーがでます。
調べてみると定義エラーとはわかったのですが、どう修正しても解決しないためどうか詳しい方ご伝授よろしくお願いします。
発生している問題・エラーメッセージ
fujimon@dynabook-R734-Linux:~/Downloads$ env DEBUGPY_LAUNCHER_PORT=46651 /usr/local/bin/python3.6 /home/fujimon/.vscode/extensions/ms-python.python-2020.4.74986/pythonFiles/lib/python/debugpy/no_wheels/debugpy/launcher /home/fujimon/Downloads/ichigiku.py おはようございます オハヨウゴザイマス b'\xef\xbd\xb5\xef\xbe\x8a\xef\xbe\x96\xef\xbd\xb3\xef\xbd\xba\xef\xbe\x9e\xef\xbd\xbb\xef\xbe\x9e\xef\xbd\xb2\xef\xbe\x8f\xef\xbd\xbd' Exception in Tkinter callback Traceback (most recent call last): File "/home/fujimon/Downloads/ichigiku.py", line 19, in btn_click henkan = result.decode('cp932') UnicodeDecodeError: 'cp932' codec can't decode byte 0xef in position 0: illegal multibyte sequence During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/local/lib/python3.6/tkinter/__init__.py", line 1702, in __call__ return self.func(*args) File "/home/fujimon/Downloads/ichigiku.py", line 21, in btn_click print(henkan) UnboundLocalError: local variable 'henkan' referenced before assignment
該当のソースコード
import jaconv import tkinter as tk root = tk.Tk() root.title("文字化けジェネレーター") root.geometry("600x150") def btn_click(): kekka.delete(0, tk.END) #kekkaのボックスをクリーン # テキスト取得 moji = txt.get() #txtに入っている文字を取得 print(moji) katakana = jaconv.hira2hkata(moji) #jaconvでmojiをひらがなに変換 print(katakana) result = katakana.encode('utf-8') print(result) try: henkan = result.decode('cp932') finally: print(henkan) kekka.insert(0, henkan) label = tk.Label(text="生み出したい文字") label.place(x=80, y=70) label2 = tk.Label(text="出てきた文字") label2.place(x=80, y=100) #label.grid() btn = tk.Button(root, text='実行', command=btn_click) btn.place(x=0, y=0) txt = tk.Entry(width=30) txt.place(x=220, y=70) kekka = tk.Entry(width=30) kekka.place(x=220, y=100) root.mainloop()
試したこと
エラー行の移動
tryとexcept、finallyを使ってエラーを処理(元々このエラーを直していると今回のエラーが出てきました)
補足情報(FW/ツールのバージョンなど)
Python 3.6.5
jaconv
tkinter
Ubuntu 20.04 LTS
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/25 10:32
2020/04/25 11:51 編集