@1Soundwave3

VK API Не отправляет кириллицу?

Всем привет!
Хочу отправлять ЛС php скриптом.
Взял скрипт вот отсюда https://habrahabr.ru/post/265563/ попытался запустить и в итоге при отправке слова "проверка" приходит ?4??4??4??4??4??4??4??6? или ?4??4??4??6? в случае слова "тест". Вообщем, не отправляется кириллица. urlencode("проверка") пробовал, ничего не вышло. Латиница приходит в лучшем виде.
Вот код функции из поста для удобства:
function send($id , $message)
{
    $url = 'https://api.vk.com/method/messages.send';
    $params = array(
        'user_id' => $id,    // Кому отправляем
        'message' => $message,   // Что отправляем
        'access_token' => '0000000000000000000000000000',  // access_token можно вбить хардкодом, если работа будет идти из под одного юзера
        'v' => '5.37',
    );
 
    // В $result вернется id отправленного сообщения
    $result = file_get_contents($url, false, stream_context_create(array(
        'http' => array(
            'method'  => 'POST',
            'header'  => 'Content-type: application/x-www-form-urlencoded',
            'content' => http_build_query($params)
        )
    )));
}
  • Вопрос задан
  • 1067 просмотров
Решения вопроса 1
neluzhin
@neluzhin
У вас, наверное, PHP-файл в кордировке отличной от UTF-8.

Также используйте более современные инструменты, например, cURL:

<?php

function send($id, $message) {
	$ch = curl_init();
	$parameters = http_build_query([
		'user_id'      => $id,
		'message'      => $message,
		'access_token' => 'fa0mfbc2b13c3104f48fd2g75e0a770b34119c89f0e16f75e1502f03e9346413c10b8ad428737496f5602',
		'v'            => '5.59'
	]);

	curl_setopt($ch, CURLOPT_URL, 'https://api.vk.com/method/messages.send');
	curl_setopt($ch, CURLOPT_POST, TRUE);
	curl_setopt($ch, CURLOPT_POSTFIELDS, $parameters);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
	curl_setopt($ch, CURLOPT_MAXREDIRS, 5);
	curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
	curl_setopt($ch, CURLOPT_TIMEOUT, 30);

	// Результат запроса к API
	$result = curl_exec($ch);

	curl_close($ch);
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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