У меня есть функция моей программы, где пользователь может загрузить 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!
обратите внимание, как бриллиант "?" теперь двойная По какой-то причине copy + paste делает его двойным ...
На странице трассировки django это выглядит так:
UnicodeDecodeError at /chris/import.html
('ascii', 'blah \xa0 BLAH', 14, 15, 'ordinal not in range(128)')
Что меня портит, так это то, что я ничего не могу сделать с этой струной без ее исключения. Я пробовал unicode (), пробовал str (), пробовал .encode (), пробовал .encode ("utf-8"), независимо от того, что выдает ошибку.
Что я могу сделать, чтобы эта штука стала рабочей строкой?