如何剥离KOI8-R编码字符中的第8位?

时间:2009-06-15 06:24:31

标签: python encoding

如何剥离KOI8-R编码字符中的第8位以便对俄语字母进行透视?特别是,如何在Python中创建它?

3 个答案:

答案 0 :(得分:2)

假设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)剥离。

答案 1 :(得分:1)

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

character = character & ~(1 << 7)

答案 2 :(得分:1)

这是一种方式:

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是否提供了一种更简洁的方法来执行此类操作:)