【发布时间】:2016-07-18 03:59:55
【问题描述】:
我正在尝试计算 JSON 文件中的行数。 Click HERE to access my JSON file .
我尝试使用下面的代码来计算行数。
input = open("json/world_bank.json")
i=0
for l in input:
i+=1
print(i)
但是上面的代码抛出了一个 UniCodeDecode 错误,如下所示。
---------------------------------------------------------------------------
UnicodeDecodeError Traceback (most recent call last)
<ipython-input-17-edc88ade7225> in <module>()
2
3 i=0
----> 4 for l in input:
5 i+=1
6
C:\Users\Subbi Reddy\AppData\Local\Continuum\Anaconda3\lib\encodings\cp1252.py in decode(self, input, final)
21 class IncrementalDecoder(codecs.IncrementalDecoder):
22 def decode(self, input, final=False):
---> 23 return codecs.charmap_decode(input,self.errors,decoding_table)[0]
24
25 class StreamWriter(Codec,codecs.StreamWriter):
UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 3979: character maps to <undefined>
然后我在open函数中包含编码参数,如下所示。
input = open("json/world_bank.json",encoding="utf8")
然后它开始工作并输出为 500。
据我所知,python open 应该将“utf8”视为默认编码。
这里哪里出错了。
【问题讨论】:
-
sys.getfilesystemencoding()在您的系统上返回什么? -
这里是“mbcs”@marcelm
-
啊嗯,这并没有告诉我太多;你能检查一下
open("json/world_bank.json").encoding吗?
标签: python-3.x utf-8 character-encoding