json_encode () возвращает ноль для специальных символов

Я знаю, что есть много вопросов по этому поводу. Я перепробовал много вещей, но я не мог это исправить. Возможно, мне не удалось выполнить решения из-за моих ограниченных знаний?

Я выбираю данные из базы данных MySQL и использую функцию json_encode (). Это работает, за исключением данных, которые содержат специальные символы (турецкий). Для этих значений json возвращает ноль. Как я могу это исправить?

Вот мой простой PHP-код:

<?php

require('init.php');

$sql="SELECT * FROM tablename;";

$result=mysqli_query($con,$sql);
$response=array();

while($row=mysqli_fetch_array($result)){array_push($response,array("X"=>$row["x"],"Y"=>$row["y"]));

}

echo json_encode($response);?>

в mysql столбцы установлены на utf8-турецкий. Я пробовал такие вещи, как установка заголовков, вызов некоторых функций, воссоздание php-файлов в кодировке utf8 и т. Д., Но ни одна из них не сработала.

1

Решение

Использование функции mysqli_set_charset в моем скрипте соединения решило проблему. Не удалось найти это по схожим вопросам. Спасибо пользователю «RiggsFolly».

2

Другие решения

добавлять TRUE: json_decode($string, TRUE); Это даст вам символы utf8 вместо escape-последовательностей Unicode (например, \u00d6).

Тебе нужно utf8 (или же utf8mb4) в соединении, в таблице и в HTML. Увидеть этот.

-1

По вопросам рекламы [email protected]