Я пытаюсь импортировать наших клиентов с нашего сайта Magento в Shopify через API. Я использую PHP и CURL
Мой сценарий отлично работает для большинства наших клиентов, но у него возникают проблемы с любыми именами, в которых есть иностранные символы, я получаю символ вопросительного знака при повторении переменных с иностранными символами, и вызов API просто терпит неудачу, и клиент не создается.
Как ни странно, если я копирую объект JSON в Insomnia и запускаю вызов API, он отлично работает даже с иностранными символами, поэтому я предполагаю, что Insomnia добавляет некоторую кодировку, которой нет в моем сценарии.
Я предполагаю, что у меня проблема с набором символов, но я не уверен, что мне нужно изменить, или я неправильно его установил.
Вот мой код Curl:
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_VERBOSE, 0);
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_POSTFIELDS, $json_string);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec ($curl);
curl_close ($curl);
и я также пытался объявить его как UTF-8
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json;charset=UTF-8'));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_VERBOSE, 0);
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_POSTFIELDS, $json_string);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec ($curl);
curl_close ($curl);
Есть ли что-то очевидное, что я ошибся?
Спасибо

Похоже, вы забываете правильно обращаться с UTF-8. Всякий раз, когда вы видите вопросительный знак, это показывает вам ошибку кодирования. Это означает, что ваши исходные данные были искажены. Это означает, что исходные данные были UTF-8, а затем вы читаете их как ASCII, которые не могут правильно обрабатывать UTF-8, поэтому Shopify увидит мусор, поскольку он работает с кодировкой UTF-8.
Если вы используете соединение с базой данных mysqli для извлечения данных из Magento, вам может потребоваться установить кодировку соединения на utf8, чтобы PHP правильно получал данные из базы данных:
$mysqli->set_charset("utf8")
помогите мне в этом stackoverflow.com/questions/65359210/…
Это была моя проблема, она читалась из БД на латинице. Спасибо!
Я думаю, вам нужно проверить код PHP CURL от Insomnia, который успешно отправил данные в Shopify API. в Insomnia & Postmen есть возможность проверять код на разных языках. Может помочь вам.