Python 如何将message.content写入文件?(编码问题)

Python 如何将message.content写入文件?(编码问题),python,json,encoding,discord.py,Python,Json,Encoding,Discord.py,我刚刚开始使用discord.py,我想记录这些消息。不幸的是,我遇到了编码问题。如果我将消息写入一个utf-8文件,我会得到特殊字符的unicode,而不是字符本身。例如,如果我将写入聊天,我的机器人会像这样将其记录到文件中:\u00e1\u00e9\u0151\u00fa\u0171。我怎样才能做到无论有人键入什么特殊字符,我都会登录到该文件中,这就是确切的字符(因此预期的结果是在文件中看到相同的字符,就像我将其从discord复制粘贴到该文件一样) 由于这只是一个非常基本的“hello w

我刚刚开始使用discord.py,我想记录这些消息。不幸的是,我遇到了编码问题。如果我将消息写入一个utf-8文件,我会得到特殊字符的unicode,而不是字符本身。例如,如果我将
写入聊天,我的机器人会像这样将其记录到文件中:
\u00e1\u00e9\u0151\u00fa\u0171
。我怎样才能做到无论有人键入什么特殊字符,我都会登录到该文件中,这就是确切的字符(因此预期的结果是在文件中看到相同的字符,就像我将其从discord复制粘贴到该文件一样)

由于这只是一个非常基本的“hello world”类型的代码,我将在这里复制完整的代码:

import json
import discord
import os
from time import gmtime, strftime

client = discord.Client()


@client.event
async def on_ready():
    print(f'We have logged in as {client.user}')


@client.event
async def on_message(message):
    userName = message.author.name + "#" + message.author.discriminator
    writeMessageToFile(filePath='D:\Projects\Discord\messages.json', userName=userName, message=message.content)


def writeMessageToFile(filePath:str, userName:str, message:str):
    messagesData = {}
    timeStamp = strftime("%Y-%m-%d %H:%M:%S", gmtime())
    if os.path.isfile(filePath):
        with open(filePath, "r", encoding='utf_8') as jsonFile:
            messagesData = json.load(jsonFile)

    userMessages = messagesData.get(userName, None)
    if userMessages is None:
        messagesData[userName] = [{'TimeStamp': timeStamp, 'Message': message}]
    else:
        messagesData[userName].append({'TimeStamp': timeStamp, 'Message': message})

    with open(filePath, "w", encoding='utf_8') as jsonFile:
        json.dump(messagesData, jsonFile, indent=2)


if __name__ == '__main__':
    token = 'XXXXXXXXXXXXXXXXXXXXXXXXX'
    client.run(token)

提前感谢您的帮助。

我找到了解决方案,我必须更改:

with open(filePath, "w", encoding='utf_8') as jsonFile:
    json.dump(messagesData, jsonFile, indent=2)
致:

现在输出是正确的

with open(filePath, "w", encoding='utf_8') as jsonFile:
    json.dump(messagesData, jsonFile, indent=2, ensure_ascii=False)