【问题标题】:Python - How do i solve UTF8 issues with JSON on Heroku?Python - 如何在 Heroku 上使用 JSON 解决 UTF8 问题?
【发布时间】:2020-12-24 23:42:21
【问题描述】:

我有一个包含字典列表的 .txt,其中有一些文件名,其中一些包含 ä ö ü。我试图用这段代码加载它:

with open('res/mp3s_stats.txt', 'r', encoding="utf-8") as f:
     data = json.load(f)

但我收到此错误:

  File "C:\Users\laure\AppData\Roaming\Python\Python38\site-packages\discord\ext\commands\bot.py", line 903, in invoke
    await ctx.command.invoke(ctx)
  File "C:\Users\laure\AppData\Roaming\Python\Python38\site-packages\discord\ext\commands\core.py", line 855, in invoke
    await injected(*ctx.args, **ctx.kwargs)
  File "C:\Users\laure\AppData\Roaming\Python\Python38\site-packages\discord\ext\commands\core.py", line 94, in wrapped
    raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe4 in position 6184: invalid continuation byte

我能做些什么来解决这个问题?每次写入或读取此文件时,我已经使用 encoding="utf-8" :/

【问题讨论】:

  • 打开文件时不指定编码,所以Python使用默认;显然,您的机器与 heroku 的默认设置不同。我倾向于指定 'utf-8' 作为编码(因为它可以编码任何 unicode 字符)并确保 json 文件保存为 UTF-8。

标签: python json utf


【解决方案1】:

我的直觉是您的 txt 文件实际上不是 UTF-8 编码的。 (0XE4 是有效的 ISO-8859-15 字符 (ä),但不是有效的 UTF-8 字符。)

【讨论】:

  • 哦,这是我没有考虑过的事情,在记事本中保存文件时,我更改了编码,它起作用了,谢谢!
猜你喜欢
  • 2019-08-13
  • 1970-01-01
  • 2020-05-27
  • 1970-01-01
  • 2020-10-10
  • 1970-01-01
  • 2022-01-11
  • 2020-07-20
  • 1970-01-01
相关资源
最近更新 更多