これは繰り返しの質問である可能性が高いことは理解していますが、解決策を見つけるのに苦労しています。
要するに、私はデコードしたい文字列を持っています:
raw = "\x94my quote\x94"
string = decode(raw)
文字列から期待される
'"my quote"'
最後の注意点は、私がPython 3で作業しているので、raw
はユニコードであり、したがってすでにデコードされているということです。それを考えると、正確に何をする必要がありますか?デコード」"\x94"
文字?
string = "\x22my quote\x22"
print(string)
デコードする必要はありません、Python 3
はそれを行いますが、二重引用符には正しい制御文字が必要です"
ただし、別の文字セットを使用している場合は、Windows-1252を使用しているように見えるため、その文字セットからバイト文字列をデコードする必要があります。
str(b"\x94my quote\x94", "windows-1252")
文字列がバイト文字列でない場合は、最初にエンコードする必要があります。latin-1エンコードが機能することがわかりました。
string = "\x94my quote\x94"
str(string.encode("latin-1"), "windows-1252")
あなたがこれを意味するかどうかはわかりませんが、これは機能します:
some_binary = a = b"\x94my quote\x94"
result = some_binary.decode()
そして、結果が得られました...選択するエンコーディングがわからない場合は、chardet.detect
を使用できます。
import chardet
chardet.detect(some_binary)
このようにやってみましたか? decode
クラスのメソッドとしてbyte
を呼び出し、引数としてutf-8
を渡す必要があると思います。文字列の前にもb
を追加します。
string = b"\x94my quote\x94"
decoded_str = string.decode('utf-8', 'ignore')
print(decoded_str)