我尝试使用这样的代码来读取 JSON 文件(使用 UTF-8 编码):
input = open("json/world_bank.json")
i=0
for l in input:
i+=1
print(i)
但我有一个
UnicodeDecodeError
。但是,一旦我尝试明确指定编码,它就开始工作了:
input = open("json/world_bank.json",encoding="utf8")
我以为
open
函数会使用"utf8"
作为默认编码?为什么需要指定?
Python 3 的默认 UTF-8 编码仅扩展到
bytes
和 str
类型之间的转换。 open()
代替根据环境选择合适的默认编码:
encoding 是用于解码或编码文件的编码名称。这应该只用于文本模式。默认编码取决于平台(无论
返回什么),但可以使用 Python 支持的任何文本编码。有关支持的编码列表,请参阅locale.getencoding()
模块。codecs
例如,具有西欧/北美语言环境的 Windows 机器通常会使用 8 位 Windows-1252 字符集(Python 称此编码为
'cp1252'
)。