我的程序有一个特性,用户可以上传一个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”),不管它抛出什么错误。
我该怎么做才能让这东西成为一根有效的弦?