我想使用隐写术将文本添加到照片的末尾:有两个功能,第一个:
def addTag(filepath, tags):
with open(filepath, 'ab') as f:
f.write(tags.encode('utf-8'))
第二:
def readTags(filepath):
with open(filepath, 'rb') as f:
byte = f.read(1)
print(byte)
while byte:
byte = f.read(1)
try:
print(byte.decode('utf-8'))
except Exception as e:
continue
第一个函数将文本添加到照片的末尾,第二个函数读取它,问题是:写入文件时,例如,这样的文本:it is testing text
第二个函数读取输入的文本没有问题,但是如果你用俄语写文本:это тестовый текст
然后第二个函数什么都不读取,不断捕获一个异常,它无法解码 utf-8 中的字节,尽管首先,在写入时,我写入 utf-8,其次,在读取时,我将其返回 utf- 8、如何解决?蟒蛇3.6.6
PS如果您在notepad ++中打开文件并选择utf-8编码,那么俄文和英文都可以毫无问题地读取所有内容
错误在这里
您只是读取一个
один
字节,但 UTF-8不是逐字节编码,而是具有可变字节数(通常为 1 到 2,但可以更多)的编码。这意味着当您仅替换一个字节进行解码时,它可能没有意义one,因此它可能期望下一个(并且 - 可能 - 甚至是下一个)字节。
您需要将字符串解码为整数。