2014-12-12 2 views
0

Я пытаюсь добавить некоторые ключевые слова в AdWords с использованием языка PHP и API AdWords. Когда я добавить ключевые слова на английском языке он отлично работает, но в России он показывает мне следующее сообщение об ошибке:Проблемы с добавлением ключевых слов с помощью 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); 
} 

Скажите, пожалуйста, как я могу решить эту проблему ? Спасибо!

ответ

1

Похоже, что 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); 
Смежные вопросы