前提・実現したいこと
Python3を使ってweb上から持ってきたファイル(16進数)をSJISで変換したい。
16進数ファイルを読み込む際に以下のような文字化け?が起こりました。
発生している問題・エラーメッセージ
Bash上でcatコマンドで開いた場合
b'"\x8f\xd8\x96\xbe\x8b@\x8a\xd6\x93\x99\x8e\xed\x95\xca","\x8f\xd8\x96\xbe\x81i\x94F\x8f\xd8\x81j\x8e\xed\x95\xca"....(※ 長すぎるので割愛)
Python3上で以下のソースコードで開いた場合
'b\'"\x8f\xd8\x96\xbe\x8b@\x8a\xd6\x93\x99\x8e\xed\x95\xca","\x8f\xd8\x96\xbe\x81i\x94F\x8f\xd8\x81j\x8e\xed\x95\xca"....(※ 長すぎるので割愛)
該当のソースコード
Python3
1>>> f = open("binfile.log","r", encoding="utf-8") 2>>> str = f.read() 3>>> str 4>>> str.decode("sjis")
試したこと
encodingを変更したり、Python3で読み込んだ文字列を操作しようとしたが効果なし。
strの一文字一文字を確認したところ、
Python3
1>>> str 2'b\'"\x8f\xd8\x96\xbe\x8b@\x8a\xd6\x93\x99\x8e\xed\x95\xca","\x8f\xd8\x96\xbe\x81i\x94F\x8f\xd8\x81j\x8e\xed\x95\xca"....(※ 長すぎるので割愛) 3>>> str[0] 4'b' 5>>> str[1] 6"'" 7>>> str[2] 8'"' 9>>> str[3] 10'\' 11>>> str[4] 12'x' 13>>> str[5] 14'8' 15>>> str[6] 16'f' 17>>> str[7] 18'\'
といった風に、
str[0]とstr[1]の間の''が存在していない
str[3]は''で一文字になっている
補足情報(FW/ツールのバージョンなど)
環境
- Python 3.5.2
- WSL
補足が必要でしたら、ご教示ください。
「\x??」の??をバイト列に入れてdecodeしてあげればsjisの「'"証明機関等種別..」というような文字列は得られるはずですが、もう少しプログラミングのベースを理解してからでないと難しいと思います。
回答2件
あなたの回答
tips
プレビュー