Я только начал изучать Python, но я уже столкнулся с проблемами.
У меня есть простой скрипт, с помощью только одной команды:Python 3 UnicodeEncodeError: кодек 'ascii' не может кодировать символы
#!/usr/bin/env python3
print("Příliš žluťoučký kůň úpěl ďábelské ódy.") # Text in Czech
Когда я пытаюсь запустить этот скрипт:
python3 hello.py
я получаю это сообщение:
Traceback (most recent call last):
File "hello.py", line 2, in <module>
print("P\u0159\xedli\u0161 \u017elu\u0165ou\u010dk\xfd k\u016fn \xfap\u011bl \u010f\xe1belsk\xe9 \xf3dy.")
UnicodeEncodeError: 'ascii' codec can't encode characters in position 1-2: ordinal not in range(128)
Я использую Kubuntu 16.04 и Python 3.5.2. Когда я пробовал: export PYTHONIOENCODING=utf-8
Он работал, но только временно. В следующий раз, когда я открыл bash, я получил ту же ошибку.
Согласно https://docs.python.org/3/howto/unicode.html#the-string-type кодировкой по умолчанию для исходного кода Python является UTF-8.
Итак, у меня есть исходный файл с сохраненным идентификатором UTF-8, Konsole установлен в UTF-8, но я все еще получаю ошибку!
Даже если добавить
# -*- coding: utf-8 -*-
начала она ничего не делает.
Еще одна странная вещь: когда я запускаю ее, используя только python, а не python3, он работает. Как можно работать в Python 2.7.12, а не в 3.5.2?
Любые идеи для решения этой проблемы? Спасибо.
Это звучит как среда не настроена правильно для UTF-8. Вот почему Python по умолчанию выполняет 'ascii' при печати Unicode. –
Возможный дубликат [UnicodeEncodeError при записи в файл] (http://stackoverflow.com/questions/32924147/unicodeencodeerror-when-writing-to-file) –
Ваша локаль должна быть разбита. Возможно, ваш .bashrc устанавливает 'LANG = cs_CZ.UTF-8', но вы не создали/не установили чешский язык? Python по умолчанию будет кодировать ASCII, если ваш язык сломан или отсутствует. Причина, по которой он работает в Python 2, состоит в том, что строка является байтовой строкой и будет просто записана непосредственно на ваш терминал. Python 3 необходимо будет кодировать строки при записи на терминал –