Помогите перекодировать json в utf8 Проблема следующая. Есть подрядчик, который шлет на наш сервер к скрипту json запрос. Пример запроса следующий:
{"internal_id":"2", "name" :"Партнер", "logo" :"тестовые данные"}

Шлет его подрядчик через какую то прикладную программу на windows 7, Уверяет что json запрос в utf-8. Во время пересылки вручную прописывает все хедеры с utf-8 
Я принимаю запрос с помощью php
Вот скрипт:
include $_SERVER['DOCUMENT_ROOT']."/api/config.php";
header('Content-type: text/html; charset=utf-8');

$data = file_get_contents('php://input');

$result = mysql_query("INSERT INTO test3 (id, rek) VALUES ('', '$data')");

В результате, в бд я получаю 
{"internal_id":"2", "name" :"???????", "logo" :""}

То есть, кирилица в бд не записывается. 
В моей БД таблица типа MyISAM, поле rek имеет кодировку utf8_general_ci
Вот что я пробовал:


*

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


В результате этого теста я понимаю что его запрос приходит в windows-1251 на наш сервер, и игнорирует все его хедеры видимо и не кодируется на его стороне в утф8.
Я пробую с помощью php перекодировать вручную и сохранить:
$data = file_get_contents('php://input');
$test1 = mb_convert_encoding($data, "utf-8", "cp1251");
$text2 = iconv('cp1251', 'UTF-8', $data);

$result = mysql_query("INSERT INTO test3 (id, rek) VALUES ('', 'test1')");

В результате у меня даже с принудительной перекодировкой на моей стороне кирилица в БД не отображается, а показывается либо ???? либо другие кряки. Я пробовал две выше представленные функции, результата положительно нет.
Затем я попробвал в бд создать таблицу test3 но уже с cp1251_general_ci
Результат положительный. Все в бд сохраняется корректно.
Вопрос, как мне все таки перекодировать json, что еще можно попробовать, так как мне надо БД сохранить в utf8 что бы не иметь потом проблем.

Попробуйте использовать mb_detect_encoding для выяснения в какой кодировке приходят данные.
$convert_data = mb_convert_encoding($json, 'utf8', mb_detect_encoding($json));

И как я понимаю у Вас соединение с БД осуществляется через устаревший драйвер mysql.
Установливается ли при коннекте к БД кодировка соединения?
mysql_query("SET NAMES utf8", $link); 


Я так понял, вы кодируете json на стороне клиента. А ві попробуйте раскодировать и снова закодировать. PHP кодирует UTF-8 символы и вы получите что-то типа {"internal_id":"2","name":"\u041f\u0430\u0440\u0442\u043d\u0435\u0440","logo":"\u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435"}
include $_SERVER['DOCUMENT_ROOT']."/api/config.php";
header('Content-type: text/html; charset=utf-8');

$data = file_get_contents('php://input');
$data = json_encode(json_decode($json));
$result = mysql_query("INSERT INTO test3 (id, rek) VALUES ('', '$data')");