2017-09-06 8 views
0

私は私がさまざまなコーデックでエンコードされたテキストを表すバイト列のカップル持っているのpython 3.5バイトをasciiに変換し、Pythonで元に戻しますか?

を使用しています:b'mybytesstring'、今いくつかはUtf8他の符号化されているが、そうでlatin1あると。私が次の順序でしたいのは:

  • 文字列をASCII文字のような文字列に変換します。
  • ASCII文字列のような文字列をバイト文字列に変換し直します。
  • 正しいコーデックでバイト文字列をデコードします。

問題は、バイトオブジェクトを受け入れないものにバイト文字列を移動する必要があるため、私がbytes -> ascii -> bytesを安全に行う解決策を探しているということです。あなたはこのためencodedecodeメソッドを使用して、彼らに希望のエンコーディングを供給

+0

を考えていたよりもはるかに簡単である解決策を見つけ、あなたがオブジェクトbytes'、それぞれが異なって符号化 '異なってい意味ですか?私はあなたが 'バイト--ascii - > str - ??? - >バイト'をしたいことを理解していないのですか? –

+0

はい私は、 'bytes'オブジェクトのグループにはすべて異なるエンコーディングがあります。 'bytes'オブジェクトだけを' string'オブジェクトだけ受け入れるコンテナにそれらをすべて入れる必要があります。その後、それらをコンテナから取り出し、適切なエンコーディングで正しくデコードすることができます。 – Thagor

答えて

0

OKは私が

mybytes = 'ëýđþé'.encode() 
str_mybytes = str(mybytes) 
again_mybytes = eval(str_mybytes) 
decoded = again_mybytes.decode('utf8') 
1
x = x.decode().encode('ascii',errors='ignore') 
0

。あらかじめエンコーディングが分かっているかどうかはわかりません。あなたがそれを知らないなら、あなたは困っている。何らかの形でエンコーディングを推測して、ガベージ出力を危険にさらす可能性があります。

+1

エンコーディングがわからない場合は、[chardet](https://pypi.python.org/pypi/chardet)を使って推測することができます。 – Eric

関連する問題