KOI8R:在转换字符串时遇到问题

2024-10-01 13:28:50 发布

您现在位置:Python中文网/ 问答频道 /正文

这个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)

怎么了?在


Tags: 用户in脚本for字母bitencodeprint
3条回答

看看您看到的错误消息,我觉得您的终端编码可能设置为KOI8-R,在这种情况下,您不需要对输入数据执行任何解码。如果是这样,那么您只需要:

>>> s = raw_input("Enter a string you want to translit: ")
>>> print ''.join([chr(ord(c) & 0x7F) for c in s])
kOD oBMENA iNFORMACIEJ, 8 BIT

您可以通过s.decode('koi8-r')进行双重检查,它应该成功并返回等效的unicode字符串。在

s = unicode(s)默认情况下需要ascii编码。你需要给它一个你输入的编码,例如s = unicode(s, 'utf-8')。在

尝试unicode(s, encoding)其中编码就是终端所在的位置。在

相关问题 更多 >