Из БД достаю данные:
mysqli_query($db,"set names utf8");
$query = "SELECT * FROM devices";
$result = mysqli_query($db,$query);
$num_results = mysqli_num_rows($result);
$data = array();
while ($row = mysqli_fetch_assoc($result))
{
$data[] = $row;
}
echo json_encode($data);
На выходе получаю JSON массив в котором кириллица закодирована в Unicode.
При замены крайней строки на json_encode($data, JSON_UNESCAPED_UNICODE) Unicode заменяется на каракули.
Как можно решить эту проблему? JSON нужен для последующего вывода в приложении C#, может эту строку можно как то преобразовать непосредственно средствами C#?
Скорее всего каракули у вас отображаются именно в браузере (или где вы там проверяете вывод echo).
Если на стороне C# предполагается обработка через нормальный десериализатор, например, через JSON.NET - просто оставьте как есть, без JSON_UNESCAPED_UNICODE - он сам правильно разэскейпит Unicode.
Если на стороне C# десериализатор не сможет разэскейпить - проставьте правильную кодировку ответа в PHP
header('Content-Type: text/html; charset=utf-8');
и кракозябры пропадут.
Почему бы вам не конвертировать строку уже со стороны C# приложения? Вот ссылка на encoding строки Encoding C#
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости