UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 18801-18807: ordinal not in range(128)

Второй раз в жизни столкнулся с сайтом написанным на python+django. Уже после первого опыта работы с этой связкой у меня осталось резко-негативное мнение о сайтах написанных при помощи этого инструментария, второй раз не стал исключением (((

Перенос делал и ОС Ubuntu 12.04 на Debian 7. Обе ОС были 64bit архитектуры. Разница была только в ОС и все, остальное переносилось 1в1 – пути, ставил версии библиотек для python, молчу о том что pip freeze выдавал список модулей которые потом долго и нудно искались, так как по неизвестным мне причинам в стандартных репах и гитах не находились.

В итоге модули были установлены, скрипты перенесены, настройки прописаны, сервисы запущены, прописываю домен в hosts и вижу там ошибку “UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 18801-18807: ordinal not in range(128)” несколько дней было убито на поиск причины, так как код на старом сервере работал, а на новом нет, при том что версии интерпритатора языка, фреймворка и модулей были одинаковыми, грешил только на систему – но где именно ? Локали были приведены в общее состояние, конфиги идентичные, настройки одинаковые. Поиск в интернете результата не дал – все что рекомендовали прописать или изменить по настройкам – не помогло вообще. В итоге после убитых безрезультатно нескольких дней решил написать знакомому программисту, в итоге (Vim с меня пиво) он решил проблему примерно за 2 минуты ! решение банальное и просто он прописал принудительную кодировку в sitecustomize.py

Он просто добавил в начало файла две строки:

import sys
sys.setdefaultencoding(‘utf-8’)

передернул uwsgi и проект стартанул работать как и на старом сервере.

Наверное это выше моего понимания когда разработчики делают через выхлопную ремонт двигателя, или не учитывают обратную совместимость и прочие гадости приводящие к танцам с бубном долгое время – что бы “оно заработало”.

В любом случае моя проблема была решена, Сане отдельное спасибо :).

1 голос

Залишити відповідь

Войти с помощью: 

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

*
*
Website