当我尝试编码西里尔字母“Р”字符时,我收到错误。这是我的代码和错误:
>>> "Р".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.谢谢你的一切建议。
编辑:
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中无效。
答案 0 :(得分:2)
Python 2.x中""
(例如str
)中的任何内容都已编码。您需要将其解码为unicode
,然后才能将其编码为其他内容。
答案 1 :(得分:0)
Python的解释器以ascii-only模式启动,因此您无法直接输入Cyrllic字符。相反,您可以通过代码点编号创建它们:
>>> print unichr(0x420)
Р
>>> unichr(0x420).encode('utf-8')
'\xd0\xa0'
或通过他们的名字:
>>> u'\N{CYRILLIC CAPITAL LETTER ER}'.encode('utf-8')
'\xd0\xa0'