私はプログラミングPythonのコード例に従っていますが、何か混乱しています.単純な文字列をファイルに書き込んで読み返すコードは次のとおりです
>>> data = 'sp\xe4m' # data to your script
>>> data, len(data) # 4 unicode chars, 1 nonascii
('späm', 4)
>>> data.encode('utf8'), len(data.encode('utf8')) # bytes written to file
(b'sp\xc3\xa4m', 5)
>>> f = open('test', mode='w+', encoding='utf8') # use text mode, encoded
>>> f.write(data)
>>> f.flush()
>>> f.seek(0); f.read(1) # ascii bytes work
's'
>>> f.seek(2); f.read(1) # as does 2-byte nonascii
'ä'
>>> data[3] # but offset 3 is not 'm' !
'm'
>>> f.seek(3); f.read(1)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xa4 in position 0:
unexpected code byte
データ文字列が utf8 でエンコードされている場合、なぜこの UnicodeDecodeError が発生するのでしょうか。手動の f.read() での読み取りは正常に機能しますが、seek to jump および read(1) を使用すると、このエラーが表示されます。