Ошибка UnicodeEncodeError: 'locale' codec can't encode character
import pyttsx3
import time
import random
import os.path
from requests_html import HTMLSession
com = "введите команду", "дайте указание", "что вы хотели?"
virus = "статистика коронавируса", "информачия об коронавирусе", "количество зараженных"
data = "скажи дату", "какая дата", "дата"
_time_ = 'скажи время', 'который час', 'сколько время'
speak = pyttsx3.init()
ass = os.path.isfile("text.txt")
session = HTMLSession()
if ass == True:
f = open("text.txt", 'r')
nn = f.read()
f.close()
print("привет", nn)
speak.say("привет" + nn)
speak.runAndWait()
_com_ = random.choice(com)
print(_com_)
speak.say(_com_)
speak.runAndWait()
comm = input(":")
while True:
if comm in virus:
rs = session.get('https://coronavirus-monitor.ru/statistika/')
rs.html.render() # Без этого не будет выполнения js кода
for row in rs.html.find('#statistics .total-table-row'):
name = row.find('.name', first=True).text.rstrip(':')
value = row.find('.value', first=True).text
print(name, value)
engine.say(name)
engine.say(value)
engine.runAndWait()
break
elif comm in data:
a = time.strftime("сегодня %B %d, %Y.", time.localtime())
print(a)
speak.say(str(a))
speak.setProperty('rate', 125)
speak.runAndWait()
break
elif comm in _time_:
yyy = time.strftime("сейчас %X.", time.localtime())
print(yyy)
speak.say(str(yyy))
speak.runAndWait()
break
elif ass == False:
speak.say("привет,мой друг,я не знаю твоего имен,не мог бы ты написать его?")
speak.runAndWait()
_name_ = input(":")
f = open("text.txt", 'w')
f.write(_name_)
f.close()
time.sleep(2)
print("привет", _name_)
speak.say("привет" + _name_)
speak.runAndWait()
input()
yyy = time.strftime("сейчас %X.", time.localtime()) UnicodeEncodeError: 'locale' codec can't encode character '\u0441' in position 0: Illegal byte sequence
Ответы (1 шт):
Автор решения: Artem Ermakov
→ Ссылка
Не следует передавать методу strftime не-ASCII символы. В некоторых случаях это будет работать, в некоторых - нет, зависит от окружения.
Вместо
a = time.strftime("сегодня %B %d, %Y.", time.localtime())
следует писать
a = "сегодня {t}".format(t=time.strftime("%B %d, %Y.", time.localtime()))