Задать вопрос
@AlexMine
Учусь

Как передать русский язык в клавиатуру чатбота?

Добрый день, начал разбираться с клавиатурой для чат ботов вк, вот мой код:
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import json


def write_message(user_id, msg, keyboard=False):
    if keyboard == False:
        vk_session.method('messages.send', {'user_id': user_id, 'message': msg})
    else:
        vk_session.method('messages.send', {'user_id': user_id, 'message': msg, 'keyboard': str(json.dumps(keyboard))})


KEYBOARD_STEP_1 = {
    'one_time': False,
    'buttons': [[{
        'action': {
            'type': 'text',
            'payload': json.dumps({'buttons': '1'}),
            'label': 'Предыдущая',
        },
        'color': 'negative'
    },
    {
        'action': {
            'type': 'text',
            'payload': json.dumps({'buttons': '2'}),
            'label': 'Pred',
        },
        'color': 'primary'
    }
    ]]
}

write_message(user_id, message, KEYBOARD_STEP_1)

На выходе получаю такое:
5b267e6b1d397195929231.png
Как правильно передать строку, чтобы правильно отобразились русские символы?
  • Вопрос задан
  • 1748 просмотров
Подписаться 1 Простой 11 комментариев
Решения вопроса 2
@SilimAl
Telegram, VK, Instagram боты
Приветствую, AlexMine !
Столкнулся с той же проблемой на PHP.
Решение оказалось простым, использовал параметр JSON_UNESCAPED_UNICODE при енкоде.
Попробуйте что-то подобное сделать на питоне.
$keyjson = json_encode($keyarr, JSON_UNESCAPED_UNICODE);


5b2aaa88c2152389115478.png
Ответ написан
YardalGedal
@YardalGedal
yeah boy
json.dumps(KEYBOARD_STEP_1, ensure_ascii=False).encode("utf-8")
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Merzavets
Достаточно добавить ensure_ascii=False:
[...] json.dumps(KEYBOARD_STEP_1, ensure_ascii=False)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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