为了账号安全,请及时绑定邮箱和手机立即绑定

葡萄牙语编码 ã, ê, ç, á

葡萄牙语编码 ã, ê, ç, á

BIG阳 2021-06-30 09:01:28
我有这个代码: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)

如果您使用支持源编码的编辑器打开它,最后一个版本肯定会起作用。


更新: 删除了我不确定是否会工作的版本——它不会。


查看完整回答
反对 回复 2021-07-13
?
慕仙森

TA贡献1827条经验 获得超7个赞

正如jedwards评论的,编码应该是 ISO 8859-1:

>>> "ã".encode('utf8').decode('iso-8859-1') 
'ã'

所以你可能想尝试用这种编码解码文本。


查看完整回答
反对 回复 2021-07-13
?
慕田峪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 的数据。在这种情况下,修复服务器。


查看完整回答
反对 回复 2021-07-13
  • 3 回答
  • 0 关注
  • 847 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信