У меня есть простой ASCII файл. Когда я пытаюсь открыть его с помощью codecs.open(..., "utf-8")
, я не могу прочитать отдельные символы. ASCII - это подмножество UTF-8, поэтому почему codecs
не может открыть такой файл в режиме UTF-8?
# test.py
import codecs
f = codecs.open("test.py", "r", "utf-8")
# ASCII is supposed to be a subset of UTF-8:
# http://www.fileformat.info/info/unicode/utf8.htm
assert len(f.read(1)) == 1 # OK
f.readline()
c = f.read(1)
print len(c)
print "'%s'" % c
assert len(c) == 1 # fails
# max% p test.py
# 63
# '
# import codecs
#
# f = codecs.open("test.py", "r", "utf-8")
#
# # ASC'
# Traceback (most recent call last):
# File "test.py", line 15, in <module>
# assert len(c) == 1 # fails
# AssertionError
# max%
Система:
Linux max 4.4.0-89-generic #112~14.04.1-Ubuntu SMP Tue Aug 1 22:08:32 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
Конечно, он работает с обычным open
. Он также работает, если я удаляю параметр "utf-8"
. И что означает 63
? Это похоже на середину 3-й линии. Я не понимаю.