python - windows下,能否直接指定编码为utf8去BOM呢?
高洛峰
高洛峰 2017-04-17 17:58:10
0
1
426

问题:

用python原生json解析 urllib2.urlopen返回的对象失败。

代码:

url = "https://www.baidu.com"
data = urllib2.urlopen(url)
json.load(data)

错误:
No JSON object could be decoded

这是接手了一个现成的项目,在本机搭环境时出现的问题。
参考下面文章,可能是因为windows下,对于UTF-8编码默认都是带BOM的,
而Python中Json库不支持带BOM的UTF-8。
参考文章

然后有几点疑问想请教大家:
1.urllib2.urlopen获取的对象确实是可以用json.load解析的么?
2.urllib2.urlopen获取对象时能否直接指定编码为utf8去BOM呢?
3.有什么方式可以是windows的UTF8编码默认去BOM么?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

membalas semua(1)
小葫芦
  1. Sama ada objek yang diperolehi oleh urllib2.urlopen boleh dihuraikan dengan json.load bergantung pada sama ada data yang dikembalikan oleh pelayan adalah dalam format json yang betul, contohnya, anda boleh menyemak sama ada jenis kandungan yang dikembalikan oleh permintaannya ialah application/json

  2. BOM digunakan untuk mengenal pasti format pengekodan semasa menyimpan fail, terutamanya apabila pengekodan UTF-16 digunakan untuk menunjukkan sama ada susunan bait pengekodan ialah big-endian atau little-endia. UTF-8 sendiri tidak memerlukan BOM. Pengekodan yang dikembalikan oleh permintaan ditentukan oleh charset dalam jenis kandungan, seperti Content-Type: application/json; charset=utf-8

  3. Sama ada pengepala BOM ditambahkan pada fail berkod UTF8 bergantung pada editor yang anda gunakan Editor yang berbeza mempunyai kaedah tetapan yang berbeza.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan