簡體   English   中英

在Python中從文件讀取和寫入unicode

[英]Read and write unicode from file in Python

我的文件中有一個unicode字符串®。 我想用Python讀取它,將其轉換為位,然后返回unicode並寫入一個新文件。 如果我使變量test_unicode = "®"並使用它,它將起作用。 但是,如果我從文件中讀取此®,則會得到一些隨機的信息(嘗試錯誤=替換,反斜杠替換,忽略)。 這是我的腳本:

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"))

如果我在內部使用®創建文件uni.txt並運行此腳本,最后我將獲得2個文件(第一個文件是使用變量test_unicode創建的,第二個文件是使用從uni.txt讀取的值創建的):

uni_test.txt --->®

uni_read.txt --->ÿý

如何正確執行“讀取-轉換為位-轉換為unicode-寫入”過程? 謝謝!

使用open(filename, 'rb')打開文件以讀取字節,然后使用適當的編碼保存

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM