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

问题:

用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教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回覆(1)
小葫芦
  1. urllib2.urlopen取得的物件能否用json.load解析取決於伺服器傳回的資料是否為正確的json格式,例如可以查看請求傳回的content-type是否為application/json

  2. BOM是檔案儲存時的用來辨識編碼格式的,特別是UTF-16編碼時用來表示編碼的位元組序是big-endian還是little-endia。 UTF-8本身是不需要BOM的。請求回傳的編碼由content-type中的charset指定,例如Content-Type:application/json; charset=utf-8

  3. UTF8編碼的檔案是否加BOM頭,取決於你使用的編輯器,不同的編輯器有不同的設定方法。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板