这个Python脚本被翻译成俄语字母:
s = u'Код Обмена Информацией, 8 бит'.encode('koi8-r')
print ''.join([chr(ord(c) & 0x7F) for c in s]) # kOD oBMENA iNFORMACIEJ, 8 BIT
这很管用。但是我想修改它以便得到用户的输入。现在我被困在这个问题上:
^{pr2}$结果是:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 0: ordinal not in range(128)
怎么了?在
看看您看到的错误消息,我觉得您的终端编码可能设置为KOI8-R,在这种情况下,您不需要对输入数据执行任何解码。如果是这样,那么您只需要:
您可以通过
s.decode('koi8-r')
进行双重检查,它应该成功并返回等效的unicode字符串。在s = unicode(s)
默认情况下需要ascii编码。你需要给它一个你输入的编码,例如s = unicode(s, 'utf-8')
。在尝试
unicode(s, encoding)
其中编码就是终端所在的位置。在相关问题 更多 >
编程相关推荐