UnicodeDecodeError:' utf-8'编解码器无法解码位置10-13中的字节:无效数据

时间:2014-12-04 21:57:28

标签: android python utf-8 decode

我使用SL4A在android上运行python脚本。我在服务器中有一个文件,它是一个.csv文件并包含字符串。有线,一行内容是这样的:

1;ABC Budaörs;47.472518;19.059895

我尝试在我的Android手机上祝酒,但是我收到以下错误。

UnicodeDecodeError: 'utf-8' codec can't decode bytes in position 10-13: invalid data

我猜python无法解码caharacter:ö。为什么?我下载文件时是不是在utf-8中?

这是我的代码:

f = urllib.urlopen(URL);
for line in f:
     droid.makeToast(line)

无论如何,如果我只是尝试在控制台上打印1;ABC Budaörs;47.472518;19.059895行,我会得到以下结果:

1;ABC Buda�rs;47.472518;19.059895

这是什么角色?

感谢您的回答!!

2 个答案:

答案 0 :(得分:1)

  

replacement character (通常是带有白色问号的黑色菱形)是Unicode标准中特殊值表中代码点U+FFFD处的符号。当系统无法将数据流呈现为正确的符号时,它用于指示问题。

并且您的错误是因为您的字符串实际上不包含utf-8它包含一些其他编码。弄清楚编码是什么,并将其用于编码!

答案 1 :(得分:0)

csv文件类似于iso-8859-1或windows-1252。

您可以使用iconv将其转换为utf-8(在Windows和unix上免费提供)

如果你在十六进制编辑器中查看文件,你可能会发现一个字节的位置设置为高位而不是两位。