【已解决】Python3读取写入json的中文乱码问题

学习资料:《Python从入门到实践》---10.4.6重构

遇到的问题如下:

问题1.中文写入json,但json文件中显示"\u6731\u5fb7\u57f9",不是中文。


   
   
   
   
  1. # 中文写入json,但文件中显示"\u6731\u5fb7\u57f9",不是中文。
  2. # encoding='utf-8',用于确保写入中文不乱码
  3. with open(filename, 'w',encoding= 'utf-8') as f_obj:
  4. json.dump(username,f_obj)

解决方法:加入ensure_ascii=False


   
   
   
   
  1. # encoding='utf-8',用于确保写入中文不乱码
  2. with open(filename, 'w',encoding= 'utf-8') as f_obj:
  3. # ensure_ascii=False,用于确保写入json的中文不发生乱码
  4. json.dump(username,f_obj,ensure_ascii= False)

问题2.当目标json文件内容为空时,出现

json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
   
   
   
   

解决方法:新增一个异常


   
   
   
   
  1. # 当 username .json为空,这里如果不加入 json .decoder .JSONDecodeError: 异常
  2. # 会导致 json .decoder .JSONDecodeError: Expecting value: line 1 column 1 ( char 0)
  3. except json .decoder .JSONDecodeError:
  4. print("文件内容是空的。")

参考资料:

  • 处理多个异常:https://python3-cookbook.readthedocs.io/zh_CN/latest/c14/p06_handle_multiple_exceptions.html
  • Python里面json读取空文件报错:https://www.oschina.net/question/3891664_2281954

你可能感兴趣的:(Python)