2024-09-30 12:13:37 发布
网友
我有这个代码:
with open('dataset.csv', "w", encoding="utf-8") as myfile: print(datafromAPI.decode("utf-8"),file=myfile)
它在通过API从数据服务器解码数据集后保存.csv文件,但编码没有显示正确的字符。例如, 我试图从记事本++编码开始,在python代码中使用utf-8、latin-1、iso8859-1等进行更改,但没有效果。在
作为commented by jedwards编码应为ISO 8859-1:
>>> "ã".encode('utf8').decode('iso-8859-1') 'ã'
所以你可以尝试用这种编码来解码文本。在
我将进一步研究这一点,但有可能print在指向文件的过程中对字符串做了一些奇怪的操作。在
print
既然您知道datafromAPI是一个bytes对象,请考虑尝试下面两种不同的方法:
datafromAPI
bytes
[write+文本模式]
write
with open('dataset.csv', "w", encoding="utf-8") as myfile: myfile.write(datafromAPI.decode("utf-8"))
[write+二进制模式]
如果您使用支持源代码编码的编辑器打开它,最后一个版本肯定可以工作。在
更新:删除了我不确定是否能正常工作的版本。
一种可能是你的文件很好,但记事本++打开它使用了错误的编码。在
注意“编码”菜单中有两组项目:
加载文件,然后检查状态栏中的当前编码。如果未显示UTF-8,请使用“在UTF-8中编码”将其视为UTF-8。在
第二种可能是服务器错误地将iso8859-1到UTF-8的转换应用到已经编码为UTF-8的数据。在这种情况下,请修复服务器。在
作为commented by jedwards编码应为ISO 8859-1:
所以你可以尝试用这种编码来解码文本。在
我将进一步研究这一点,但有可能
print
在指向文件的过程中对字符串做了一些奇怪的操作。在既然您知道
datafromAPI
是一个bytes
对象,请考虑尝试下面两种不同的方法:[
write
+文本模式][
^{pr2}$write
+二进制模式]如果您使用支持源代码编码的编辑器打开它,最后一个版本肯定可以工作。在
更新:删除了我不确定是否能正常工作的版本。
一种可能是你的文件很好,但记事本++打开它使用了错误的编码。在
注意“编码”菜单中有两组项目:
加载文件,然后检查状态栏中的当前编码。如果未显示UTF-8,请使用“在UTF-8中编码”将其视为UTF-8。在
第二种可能是服务器错误地将iso8859-1到UTF-8的转换应用到已经编码为UTF-8的数据。在这种情况下,请修复服务器。在
相关问题 更多 >
编程相关推荐