Shlyahten
@Shlyahten

Как в Python исправить кодировку для кириллицы?

Вся кириллица превращается в подобное: \xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82
И в таком же виде записывается в файл.
Как можно это исправить?

from chatterbot import ChatBot

# Create a new instance of a ChatBot
bot = ChatBot("Alice",
    storage_adapter="chatterbot.adapters.storage.JsonDatabaseAdapter",
    logic_adapters=[
        "chatterbot.adapters.logic.MathematicalEvaluation",
        "chatterbot.adapters.logic.TimeLogicAdapter",
        "chatterbot.adapters.logic.ClosestMatchAdapter"
    ],
    input_adapter="chatterbot.adapters.input.TerminalAdapter",
    output_adapter="chatterbot.adapters.output.TerminalAdapter",
    database="database.db"
)

bot.train(
    "Привет",
    "Привет)",
    "Как дела?",
    "Отлично)",
    "А у тебя?",
    "Хорошо",
)

print("Type something to begin...")

# The following loop will execute each time the user enters input
while True:
    try:
        # We pass None to this method because the parameter
        # is not used by the TerminalAdapter
        bot_input = bot.get_response(None)

    # Press ctrl-c or ctrl-d on the keyboard to exit
    except (KeyboardInterrupt, EOFError, SystemExit):
        break
  • Вопрос задан
  • 7848 просмотров
Решения вопроса 1
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
Кодировку в заголовке укажите первой строкой
# -*- coding: utf-8 -*-
Какая версия python?
Если вторая - то сделайте импорт сразу после указания кодировки:
from __future__ import unicode_literals
Либо явно указывайте:
u"Привет",
    u"Привет)",
    u"Как дела?",
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
sim3x
@sim3x
In [1]: s = b'\xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82'

In [2]: s
Out[2]: b'\xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82'

In [3]: print(s)
b'\xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82'

In [4]: print(s.decode('utf8'))


у тебя проблема с пониманием кодировок
Перед тобой кириллица, в utf8 в безопасном ascii виде (ака latin1)

Тебе нужно найти настройки chatterbot и посмотреть как там настроить ensure_ascii=False
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы