Neatek logo logotype
AdminVPS Hosting VDS

Нужно разработать сайт, или сделать разовую поддержку сервера? Или перенести сайт?

Технический специалист всегда поможет, расскажет, исправит неисправляемое.

Сделай заказ прямо сейчас

Python Error — ‘ascii’ codec can’t encode characters in position

Ошибка — ‘ascii’ codec can’t encode characters in position — часто встречаемая, и парой невозможно понять в чём собственно причина, почему из раза в раз она появляется, и почему не помогает никакие .encode(‘utf8’) и .decode(‘ascii’)

ASCII — очень древняя кодировка которая по сути уже умирает, у нее очень ограниченный набор символов, соответственно это не подходит для русского и прочих языков, нам нужна UTF8 кодировка где более миллиона символов.

ascii-char-table-charset

Окей, давайте приступим ко всем действиям что возможно вам помогут.

1) Это выставить в начале файла

# -*- coding: utf-8 -*-

2) Сохранить в редакторе в формате UTF-8

Если после этого не помогает, нужно проверить какая системная кодировка и поддерживается ли язык ru_RU.UTF8 в вашей системе, пишем в консоли Linux — locale , если у вас все хорошо то выдача должна быть такой:

LANG=ru_RU.UTF-8
LANGUAGE=
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=ru_RU.UTF-8

У вас не так? нужно прописать локаль, установите пакет если не установлен — apt-get install -y locales, теперь набирайте locale-gen ru_RU.UTF-8, потом набирайте dpkg-reconfigure locales, там выбирайте ru_RU.UTF-8, , если выдает ошибку, то проверьте файл /etc/locale.gen в файле удаляйте # перед значением ru_RU.UTF-8

Также советую установить русские символы для консоли на всякий случай —

  1. apt-get install console-cyrillic
  2. dpkg-reconfigure console-cyrillic
  3. /etc/init.d/console-cyrillic start

После всего этого опять пишите locale-gen ru_RU.UTF-8 и dpkg-reconfigure locales

Далее, вводите locale и проверяете вывод вашего содержимого, чтобы было как выше.

Пишем для проверки установки update-locale если вывод пустой, можно спать спокойно системная кодировка установлена успешно.

Попробуйте запустить ваш скрипт, и проверить наличие кириллицы. Не помогло и у вас маленькая баз? переведите её в utf8_unicode_ci

utf8-unicode-ci-python-charset-fix

Python3 — работает с UTF8 полностью. И эти действия помогут получать данные и обмениваться ими без проблем в UTF8.
Python2 — не особо работает с UTF8, по крайне мере не из «коробки».

Оцените данную статью

КолДваТриЧетыреОтлично! (3 оценок, средне: 3,67 из 5)