鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: LeonardCohenX

[已解决]关于Python:如何从json文件中读取中文问题

[复制链接]
 楼主| 发表于 2021-8-18 11:17:46 | 显示全部楼层

你这个是不是用的pycharm
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-18 11:18:23 | 显示全部楼层
LeonardCohenX 发表于 2021-8-18 11:16
我也不知道你这个为什么会成功,可能你这个能够自动编码,我用的是VS code,必须用:
open(filename, 'r' ...

我也是vscode
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-18 11:19:12 | 显示全部楼层
LeonardCohenX 发表于 2021-8-18 11:16
我也不知道你这个为什么会成功,可能你这个能够自动编码,我用的是VS code,必须用:
open(filename, 'r' ...

但是只要json文件里面没有中文 存的\u啥啥啥 就不用考虑编码了 纯英文纯数字啥编码都没关系的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-18 11:28:08 | 显示全部楼层
  1. import json

  2. # 首先你存入的内容必须是json的格式
  3. # 所以你写入的时候必须用json在文件中写入
  4. # 因为json的数据如果是中文,会使用Unicode编码格式写入文件,你不能用手写,我给你举例说明:
  5. pc = '电脑'
  6. res = json.dumps(pc)
  7. print(res)  # "\u7535\u8111" 这个是电脑的JSON格式的表示 如果你在里面写入中文是不行的,这就是导致你读取乱码的原因

  8. # 下面我们整理下你代码应该怎么写:
  9. # 先写入文件
  10. pc = '电脑'
  11. filename = 'username.json'
  12. with open(filename, encoding='utf-8', mode='wt') as file_object:
  13.     json.dump(pc, file_object)

  14. with open(filename, encoding='utf-8',mode='rt') as file_object:
  15.     username = json.load(file_object)
  16.     print("Welcome back, " + username + "!")
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-18 11:33:46 | 显示全部楼层

我用的是暗色主题,你这个颜色我还真没看出来😂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-18 11:39:29 | 显示全部楼层
kogawananari 发表于 2021-8-18 11:19
但是只要json文件里面没有中文 存的%u啥啥啥 就不用考虑编码了 纯英文纯数字啥编码都没关系的

你这个我试了,确实是这样,我首先打印"武",结果文件显示\u什么的,如果我不管这个东西再次打印,它显示的也是"武",只不过username.json文件里是\u,而不是“武”,这个其实就是一个视觉的问题。相反如果我。利用那个什么编码格式,我就得在里面添加我刚才跟你说的那个东西。这下子我们两个人都懂了。针布戳
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-18 11:44:34 | 显示全部楼层

我才懂这个东西,如果我在一开始利用json.dump打印中文后不管username.json文件中的\u什么的,直接利用json.load打印,打印的结果确实是刚才打印的中文。只不过为了方便观察username.json文件里的内容,所以在里面添加了相关编码格式。谢谢朋友
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-18 11:55:53 | 显示全部楼层
LeonardCohenX 发表于 2021-8-18 11:44
我才懂这个东西,如果我在一开始利用json.dump打印中文后不管username.json文件中的%u什么的,直接利用js ...

中文在里面的编码格式,一般不是给人看的,是机器看的,如果你要看最多只能看懂assic一些码表的内容在里面,也就是常说的数字和英文等,所以如果涵盖中文的,就没办法看懂,只能读取了,一般来说在json中手写的数据只会是正常的数字和英文这些,写中文json解码的时候就乱了。你应该看看 json格式 在python中有哪些对应表示,这样有助于你读懂json数据的含义
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-18 12:00:06 | 显示全部楼层
gdmao002 发表于 2021-8-18 11:55
中文在里面的编码格式,一般不是给人看的,是机器看的,如果你要看最多只能看懂assic一些码表的内容在里 ...

好的大佬,你这一看就是明白人。THANKS
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-15 01:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表