我有这个代码:with open('dataset.csv', "w", encoding="utf-8") as myfile:
print(datafromAPI.decode("utf-8"),file=myfile)通过 API 从数据服务器解码数据集后保存 .csv 文件,但编码未显示正确的字符。例如,ã 显示 ã,ê 显示 ê,ç 显示 ç,á 显示 á等我尝试从记事本++的编码开始更改,并在我的 python 代码中使用utf-8、latin-1、ISO 8859- 1等,没有影响。
3 回答
森林海
TA贡献2011条经验 获得超2个赞
我将不得不进一步研究这个问题,但是print在发送到文件的过程中可能对您的字符串做了一些奇怪的事情。
既然您知道datafromAPI是一个bytes对象,请考虑尝试以下三种两种不同的方法:
[ write+文本模式]
with open('dataset.csv', "w", encoding="utf-8") as myfile:
myfile.write(datafromAPI.decode("utf-8"))
[ write+二进制模式]
with open('dataset.csv', "wb") as myfile:
myfile.write(datafromAPI)
如果您使用支持源编码的编辑器打开它,最后一个版本肯定会起作用。
更新: 删除了我不确定是否会工作的版本——它不会。
慕田峪4524236
TA贡献1875条经验 获得超5个赞
一种可能是您的文件没问题,但 Notepad++ 使用错误的编码打开它。
请注意,编码菜单中有两组项目:
以 UTF-8 编码会将当前数据重新解释为 UTF-8。当您使用此项目时,您应该会看到编辑器中的文本发生变化。
转换为 UTF-8会将加载的数据从当前编码转换为 UTF-8。
加载文件,然后在状态栏中检查当前编码。如果不显示 UTF-8,请使用“以 UTF-8 编码”将其视为 UTF-8。
第二种可能性是服务器错误地将 ISO 8859-1 到 UTF-8 转换应用于已编码为 UTF-8 的数据。在这种情况下,修复服务器。
添加回答
举报
0/150
提交
取消