「ユニコードのエンコーディングを決定する」、「ユニコード」でPythonのデータ型であり、場合「エンコーディング」は、元のバイトパターンを指して、あなたは、それを行うことはできませんそれは入力時に文字列を表現していました(たとえば、ファイル、データベースから読み込み、名前を付けたもの)。 Pythonの 'unicode'型(内部表現)になるまでに、文字列は行の後ろでデコードされたか、またはバイトシーケンスがシステムエンコーディングでジブにならなかったのでデコード例外がスローされました。
Shadyabhiの答えはあなたが(あなたが非常によく文字列に詰めることができた - ないPythonのUnicode文字列)ファイルからバイトを読み込むされている(共通)の場合を参照し、どのようなエンコーディングで推測する必要があります彼らは救われました。厳密に言えば、 "latin1 unicode python string"を持つことはできません:Unicode Python文字列にはエンコーディングがありません(エンコーディングは文字をバイトパターンに変換し、逆のプロセスとしてデコードするプロセスとして定義できます;デコードされた文字列はtherfore noエンコーディング - ストレージ/外部表現の目的でいくつかの方法でエンコードできます)。私のマシン上のインスタンスのために
:
デフォルトのエンコーディングはUTF-8、またはUTF-16、またはLATIN1は異なるものであることを起こる場合は、あなたの例では、latin1_unicodeはゴミが含まれています、ということを意味
In [35]: sys.stdin.encoding
Out[35]: 'UTF-8'
In [36]: a='è'.decode('UTF-8')
In [37]: b='è'.decode('latin-1')
In [38]: a
Out[38]: u'\xe8'
In [39]: b
Out[39]: u'\xc3\xa8'
In [41]: sys.stdout.encoding
Out[41]: 'UTF-8'
In [42]: print b #it's garbage
è
In [43]: print a #it's OK
è
。
だからあなたがしたい(も)何です:
- 確かめるデータソースのエンコーディング - おそらくShadyabhiのメソッド
- デコードデータは、上記(1)、それを保存のいずれかを使用してPythonのUnicode文字列で
- 元のエンコーディング(あなたのニーズに合ったものであれば)または選択した他のエンコーディングを使用してエンコードします。
これはPython 3であるか?それ以外の場合は、「ユニコード」とはどういう意味ですか? – cha0site
バイト配列のエンコーディングを推測する方法は? –
私はユニコードインスタンスを意味します。そして、いいえ、それはPython 3ではありません。コードポイントと、指定されたエンコーディングまたはその他の方法で文字を表現する方法を選択することで、Unicode文字列のエンコーディングを判断する方法を尋ねています。いずれにしても可能です。 – JayLev