python json.dumps中文乱码,dump文件乱码

  python json.dumps中文乱码,dump文件乱码

  JSON。Dumps (var,guarantee _ ascii=false)无法解决中文乱码问题。

  Json.dumps在不同版本的Python中会有不同的表现。注意,下面提到的中文乱码问题在Python版本3中是不存在的。

  注:以下代码在Python版下测试通过。

  #-*-编码:utf-8-*-

  Odata={a 3360 Hello}

  打印数据结果

  { a : xe4 xbd xa0 xe5 xa5 xbd }

  1printjson.dumps(odata)结果

  { a : }

  1 printjson.dumps (odata,guarantee _ ascii=false)结果

  { 一个 3360 }

  1 printjson.dumps (odata,guarantee _ ascii=false)。解码( utf8 )。编码( gb2312 )结果

  {a: Hello}要解决中文编码,你需要知道python2.7如何处理字符串:

  因为#-编码: utf-8-,文件内容是用utf-8编码的,所以打印odata

  输出是utf-8编码的结果{ a : xe4 xbd xa0 xe5 xa5 xbd }

  json.dumps序列化时,中文默认使用Ascii编码,print json.dumps(odata)输出unicode编码的结果。

  打印JSON。Dumps (odata,guarantee _ ascii=false)是一个未使用的ascii码,用gbk编码。

  “Hello”由utf8编码,由gbk解码。

  Python中字符串的表示是unicode编码。

  因此,在编码转换过程中,通常使用unicode作为中间编码,即先将其他编码的字符串解码成unicode,然后再编码成另一种编码。

  Decode用于将其他编码字符串转换为unicode编码。

  Decode(utf-8 )表示将utf-8编码的字符串转换为unicode编码。

  Encode用于将unicode编码转换为其他编码字符串。

  Encode (gb2312 ),这意味着将unicode编码的字符串转换为gb2312编码。

  python3不存在这个问题。最简单的方法就是引入__future__模块,将新版本的特性导入到当前版本中。

  from _ _ future _ _ hurdico de _ literals

  打印json.dumps (odata,guarantee _ ascii=false)结果

  {A 3360 Hello}写入文件时出现Python2.7的unicode encoderror : ASCII CodecCan teen code异常。

  大神的解决方案:

  打开文件,但不打开,而是使用编解码器:

  from _ _ future _ _ hurdico de _ literals

  导入编解码器

  fp=codecs.open(output.txt , a , utf-8 )

  fp.write(json.dumps(m,确保_ascii=False))

  fp.close()

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: