2011-11-14 19 views
1

キリル文字 "Р"文字をエンコードしようとするとエラーが発生します。ここに私のコードとエラーがあります:Python 2.7.xでキリル文字をエンコードできません

>>> "Р".encode('utf8') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128) 

どのように解決するか。私を助けてください。私はPython 2.7.xを使用しています。あらゆるアドバイスありがとうございます。

EDITED:

def _to_unicode_or_bust(self, obj, encoding='utf-8'): 
    if isinstance(obj, basestring): 
     if not isinstance(obj, unicode): 
      obj = unicode(obj, encoding) 
    return obj 

私はプレゼンテーションからメソッドの上に取得します。これは、端末と単純なpythonファイルでの作業です。 OpenERPでは動作しません。

答えて

2

Python 2.xでの(例:str)のものはすべて既にエンコードされています。別のものとしてエンコードするには、それをunicodeにデコードする必要があります。

"Unicode In Python, Completely Demystified"

+0

をいっそのこと、私たちはリテラルで開始している場合、ユニコードリテラル( 'U」Рを作成")。 –

+0

端末とシンプルなpythonファイルで動作しています。しかし、今はOpenERPで作業しています。私の編集を参照してください。 – Zeck

+0

PowerPointスライドは物事を理解しにくいようです。 – GrandAdmiral

0

あなたが直接入力Cyrllic文字をすることはできませんので、Pythonのインタプリタは、ASCIIのみのモードで起動します。代わりに、あなたは自分のコードポイント数によってそれらを作成することができます。

>>> print unichr(0x420) 
Р 
>>> unichr(0x420).encode('utf-8') 
'\xd0\xa0' 

またはその名前で:

>>> u'\N{CYRILLIC CAPITAL LETTER ER}'.encode('utf-8') 
'\xd0\xa0' 
関連する問題