我的程序有一个特性,用户可以在这里上传一个csv文件,我的程序通过这个文件并将其用作输入。我有一个用户抱怨他的输入出现错误的问题。错误是由于存在编码错误的非法字符造成的。字符如下:
�
有时它看起来像是一颗带有“?”的钻石。在中间。有时它看起来像一个带有“?”的双菱形。中间,有时显示为“xa0”,有时显示为“xa0\xa0”。
在我的程序中,如果我这样做:
print str_with_weird_char
罢工将出现在我的终端与钻石“?”代替了古怪的角色。如果我复制+粘贴该字符串到ipython,它将退出并显示以下消息:
In [1]: g="blah��blah"
WARNING:
********
You or a %run:ed script called sys.stdin.close() or sys.stdout.close()!
Exiting IPython!
注意钻石“?”现在是双份的。出于某种原因,复制+粘贴会使其翻倍…
在Django回溯页面中,它看起来如下:
UnicodeDecodeError at /chris/import.html
('ascii', 'blah \xa0 BLAH', 14, 15, 'ordinal not in range(128)')
把我搞得一团糟的是,我不能用这根绳子做任何事,除非它加上一个多余的部分。我尝试了unicode(),我尝试了str(),我尝试了.encode(),我尝试了.encode(“utf-8”),不管它引发了什么错误。
我该怎么做才能让这个东西成为一根工作线?