如何去除KOI8R编码字符中的第8位?

2024-05-20 08:21:31 发布

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

如何去掉KOI8-R编码字符中的第8位,以便对俄文字母进行音译?特别是,如何用Python编写它?在


Tags: 编码音译字母字符koi8
3条回答

假设s是KOI8-R编码的字符串,可以尝试以下操作:

>>> s = u'Код Обмена Информацией, 8 бит'.encode('koi8-r')
>>> s
>>> '\xeb\xcf\xc4 \xef\xc2\xcd\xc5\xce\xc1 \xe9\xce\xc6\xcf\xd2\xcd\xc1\xc3\xc9\xc5\xca, 8 \xc2\xc9\xd4'

>>> print ''.join([chr(ord(c) & 0x7F) for c in s])
>>> kOD oBMENA iNFORMACIEJ, 8 BIT

第8位被(ord(c) & 0x7F)剥离。在

有一种方法:

import array

mask = ~(1 << 7)

def convert(koistring):
    bytes = array.array('B', koistring)
    for i in range(len(bytes)):
        bytes[i] &= mask

    return bytes.tostring()

test = u'Русский Текст'.encode('koi8-r')
print convert(test) # rUSSKIJ tEKST

我不知道Python是否提供了一种更干净的方法来执行这种操作:)

我不太确定你想要什么,但是如果你想把第8位归零,可以这样做:

character = character & ~(1 << 7)

相关问题 更多 >