Проблемы с добавлением ключевых слов с помощью AdWords API

Я пытаюсь добавить несколько ключевых слов в AdWords, используя язык PHP и API AdWords. Когда я добавляю ключевые слова на английском языке, это работает нормально, но на русском языке это показывает мне следующее сообщение об ошибке:

[SoapFault]
SOAP-ERROR: Encoding: string '\xd2...' is not a valid utf-8 string (0)
/var/www/html/www3.repka.com.ua/sources/repka/work/adwords/AdWordsApi/source/src/Google/Api/Ads/Common/Lib/AdsSoapClient.php:232
#0: SoapClient->__soapCall(string, array, NULL, array, array)
/var/www/html/www3.repka.com.ua/sources/repka/work/adwords/AdWordsApi/source/src/Google/Api/Ads/Common/Lib/AdsSoapClient.php:232
#1: AdsSoapClient->__soapCall(string, array)
/var/www/html/www3.repka.com.ua/sources/repka/work/adwords/AdWordsApi/source/src/Google/Api/Ads/AdWords/v201409/AdGroupCriterionService.php:9936
#2: AdGroupCriterionService->mutate(array)
/var/www/html/www3.repka.com.ua/sources/repka/work/adwords/index.php:213

Ниже вы можете увидеть мой код:

$adGroupId = 1648319****;
$adGroupId = (float)$adGroupId;
$user = new AdWordsUser();
$user->LogAll();

$word = "Текст"; // error, but with $word = "Keyword" it works fine
echo $word;
echo urlencode($word);
$word = urlencode($word);

$adGroupCriterionService = $user->GetService('AdGroupCriterionService', 'v201409');
// Create keyword criterion.
$keyword = new Keyword();
$keyword->text = $word;
$keyword->matchType = 'BROAD';

// Create biddable ad group criterion.
$adGroupCriterion = new BiddableAdGroupCriterion();
$adGroupCriterion->adGroupId = $adGroupId;
$adGroupCriterion->criterion = $keyword;

// Set additional settings (optional).
$adGroupCriterion->userStatus = 'PAUSED';
$adGroupCriterion->destinationUrl = 'https://repka.ua/noutbuki/asus-s301lp-s301lp-c1010h-92202/';

$adGroupCriteria[] = $adGroupCriterion;
//var_dump($adGroupCriteria);

// Create operation.
$operation = new AdGroupCriterionOperation();
$operation->operand = $adGroupCriterion;
$operation->operator = 'ADD';
$operations[] = $operation;$result = $adGroupCriterionService->mutate($operations);

// Display results.
foreach ($result->value as $adGroupCriterion) {
printf("Keyword with text '%s', match type '%s', and ID '%s' was added.\n",
$adGroupCriterion->criterion->text,
$adGroupCriterion->criterion->matchType,
$adGroupCriterion->criterion->id);
}

Подскажите пожалуйста как мне решить эту проблему?
Спасибо!

0

Решение

Похоже, API принимает только строки UTF-8. Поэтому вам нужно будет преобразовать этот русский текст в строку в кодировке UTF-8.

mb_detect_encoding может помочь вам выяснить, что такое существующая кодировка и Iconv позволит вам конвертировать его в UTF-8.

Попробуй это:

$word = "Текст";
$word = iconv(mb_detect_encoding($word, mb_detect_order(), true), "UTF-8", $word);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]