从Python中的文件读写unicode

2024-09-26 22:55:13 发布

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

我有一个unicode®文件。我想用Python读取它,将其转换为位,然后返回到unicode并写入一个新文件。 如果我创建一个变量test_unicode = "®"并使用它,它就可以工作了。但是如果我从一个文件中读到这个-,我会得到一些随机的东西(尝试过错误=replace,backslashreplace,ignore)。这是我的剧本:

def frombits(bits):
    chars = []
    for b in range(int(len(bits) / 8)):
        byte = bits[b*8:(b+1)*8]
        chars.append(chr(int(''.join([str(bit) for bit in byte]), 2)))
    return ''.join(chars)

bit_list = ''
with open('uni.txt', "r", encoding='utf-8', errors='replace') as f:
    byte = f.read(1)
    while(byte):
        bit_list+='{0:08b}'.format(ord(byte))
        byte=f.read(1)

test_unicode = '®'
test_unicode_bit_list = '{0:08b}'.format(ord(test_unicode))

print(bit_list)
print(test_unicode_bit_list)

test_unicode = ''.join(frombits(test_unicode_bit_list))
read_unicode = ''.join(frombits(bit_list))

print(test_unicode.encode("utf-8"))
print(read_unicode.encode("utf-8"))

f = open("uni_test.txt", 'wb')
f.write(test_unicode.encode("utf-8"))
f = open("uni_read.txt", 'wb')
f.write(read_unicode.encode("utf-8"))

如果我做个档案统一文本有了®并运行这个脚本,最后我得到了2个文件(第一个是使用变量test_unicode生成的,第二个是使用从中读取的值生成的)统一文本)公司名称:

统一_测试.txt--->;®

统一_阅读.txt--->;ÿý

如何正确执行“读-转换为位-转换为unicode-写入”过程?谢谢您!在


Tags: 文件testtxtreadunicodebitbytelist

热门问题