gpt4 book ai didi

python UnicodeDecodeError : 'utf8' codec can't decode byte

转载 作者:太空宇宙 更新时间:2023-11-04 12:31:14 25 4
gpt4 key购买 nike

我正在尝试创建一个以 UTF-8 编码的 C++ 文件。实际上,当我尝试创建这样的文件时:

#include <fstream>
#include <iostream>

int main() {
std::ofstream myfile("test.json");
myfile << "{\"test\":\"é\"}";
myfile.close();
}

然后 python 无法将其解码为 UTF-8,我必须使用 ISO-8859-1 对其进行解码:

import json
import codecs

with codecs.open('test.json', encoding='ISO-8859-1') as json_file:
data = json.load(json_file)
print(data)

当我将编码设置为 utf8 时,出现错误:

UnicodeDecodeError: 'utf8' codec can't decode byte 0xe9 in position 0: unexpected end of data

我怎样才能使这个文件使用 C++ 编码为 UTF-8?我真的需要这个文件是 UTF-8 而不是 ISO-8859-1。

我还尝试使用 Vim(而不是使用 c++)创建 json,并且成功了。

最佳答案

您需要配置您的文本编辑器/IDE。

C++ 只是将字节写入输出文件,这些字节采用您在源代码中写入的文本形式(因为数据是字符串文字)。因此,它们具有您的文本编辑器/IDE 指定的编码。确保设置为 UTF-8。

目前,您的编辑器似乎被配置为编写一些其他编码。然后,当尝试从结果中解码 UTF-8 代码点时,Python 脚本遇到了一些不同的东西并告诉你它。

当您将编辑器更改为 Vim 时,您的解决方案有效支持这一点。

或者,您可以将其设为 UTF-8 字符串文字 (u8"é")。如果源文件不是 UTF-8,这应该会在内部触发重新编码,尽管我不确定这在现代生态系统中的可靠程度。

关于 python UnicodeDecodeError : 'utf8' codec can't decode byte,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58594468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com