Данные отчета от Amazon MWS, показывающие японский символ в виде знака вопроса - PullRequest
1 голос
/ 05 июня 2019

Я получаю отчет об инвентаризации из Amazon MWS API, и все работает хорошо, но японский символ в отчете отображается в виде знака вопроса, как ( i o iID o i SKU)

Я сделал заголовок с utf-8, он все еще не работает. пожалуйста, проверьте мою страницу, где я печатаю данные и функции, используемые для этого файла отчета.

<?php 
ini_set('default_charset', 'utf-8');

$extras["ReportId"] = "2806975788011234";
$output_result = amazon_GetReport($amazonAWSAccessKeyId,$amazonSellerId,$amazonMWSAuthToken,$amazonMarketPlaceId,$amazonSecretKey,$domain,$extras);
print_r($output_result);

Функция amazon_GetReport

<?php
function amazon_GetReport($amazonAWSAccessKeyId,$amazonSellerId,$amazonMWSAuthToken,$amazonMarketPlaceId,$amazonSecretKey,$domain,$extras,$amazon_feed=""){
$param = array();
$param['AWSAccessKeyId']     = $amazonAWSAccessKeyId;
$param['Action']             = 'GetReport';
$param['SellerId']           = $amazonSellerId;
$param['MWSAuthToken']       = $amazonMWSAuthToken;
$param['SignatureMethod']    = 'HmacSHA256';
$param['SignatureVersion']   = '2';
$param['Timestamp']          = gmdate("Y-m-d\TH:i:s.\\0\\0\\0\\Z", time());
$param['Version']            = '2009-01-01';
$param = array_merge($param,$extras);

$secret = $amazonSecretKey;

$url = array();
foreach ($param as $key => $val) {

    $key = str_replace("%7E", "~", rawurlencode($key));
    $val = str_replace("%7E", "~", rawurlencode($val));
    $url[] = "{$key}={$val}";
}

$amazon_feed = $amazon_feed;

sort($url);

$arr   = implode('&', $url);

$sign  = 'POST' . "\n";
$sign .= 'mws.amazonservices.'.$domain.'' . "\n";
$sign .= '/Reports/'.$param['Version'].'' . "\n";
$sign .= $arr;

$signature      = hash_hmac("sha256", $sign, $secret, true);
$httpHeader     =   array();
$httpHeader[]   =   'Transfer-Encoding: chunked';
$httpHeader[]   =   'Content-Type: application/xml';
$httpHeader[]   =   'Content-MD5: ' . base64_encode(md5($amazon_feed, true));
$httpHeader[]   =   'Expect:';
$httpHeader[]   =   'Accept:';

$signature      = urlencode(base64_encode($signature));

$link  = "https://mws.amazonservices.".$domain."/Reports/".$param['Version']."?";
$link .= $arr . "&Signature=" . $signature;


$ch = curl_init($link);
curl_setopt($ch, CURLOPT_HTTPHEADER, $httpHeader);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $amazon_feed);
$response = curl_exec($ch);
$info = curl_getinfo($ch);
$errors=curl_error($ch);
curl_close($ch);

 return $response;

}

...