Как добиться одинаковой обработки юникода Python-скрипта в консоли и в Spyder (IDE)?
Есть скрипт на Python, парсящий несколько десятков тысяч страниц. Отладка и запуск данного кода в Spyder проходит без каких-либо ошибок. Страницы парсятся корректно, и скрипт успешно отрабатывает.
В консоли же запуск этого же скрипта неизменно вываливает ошибки вида
"UnicodeEncodeError: 'ascii' codec can't encode characters in position 3-4: ordinal not in range(128)"
Как добиться одинакового поведения работы скрипта в Spyder и в консоли?
Владимир Куц
@fox_12 Автор вопроса, куратор тега Python
В данном случае он валится на записи юникодной строки в csv. Но я специально куски кода не привожу, потому что та же самая проблема возникает и в другом скрипте при печати на экран. В Spyder все замечательно - юникод печатается, в консоли валится с ошибками. Понятно что можно заново переписать скрипт, принудительно перекодировать строки и пр. Но во-первых дебажить код сначала в spyder, а потом в консоли как минимум неудобно. Ну и во-вторых вместе с тем сам Spyder почему-то все корректно отрабатывает, хотя использует тот же скрипт и ту же версию Питона - т.е. таки каким-то образом проблема решается. Да и в-третьих хотелось бы обойтись без переписывания самих скриптов.
Вот хотелось бы добиться такого же поведения и от работы в консоли, и самое главное - разобраться в причинах такого поведения.
@sim3x Нет, при записи в файл - именно .encode (исходя из предположения, что работа со строками ведётся в Unicode). Я на это много раз натыкался - в Win-консоль Unicode выводится отлично, а при перенаправлении вывода в файл (через >) - не работает. Надо конвертировать в utf-8.
@fox_12 О чём я и говорю. Не получается писать Unicode в файл, надо конвертировать из Unicode в utf-8 или, например, в cp1251.
Написано
Владимир Куц
@fox_12 Автор вопроса, куратор тега Python
Это все понятно. Но как избавиься от главной проблемы - от необходимости дебажить код в IDE и в консоли отдельно. К тому же в IDE все работает замечательно - без лишнего огорода с кодировками. Что делает IDE, что позволяет решать проблемы с юникодом? В Spyder тоже общеизвестные проблемы с юникодом встречаются, но их на порядок меньше, чем при работе с консоли. Вот этих проблем с консолью и хочется избежать.