PHP получает UTF-8 неанглийские символы из запроса MySQL, но Ajax не отображает их в заголовке

Я хочу получать слова на разных языках и отображать их на печатной машинке.
Вот код Ajax: [все другие коды, например, HTML установлены правильно.]

$(document).ready(function(){

$('#country').typeahead({
source: function(query, result)
{
$.ajax({
url:"test.php",
method:"POST",
data:{query:query},
dataType:"json",
success:function(data)
{
result($.map(data, function(item){
return item;
}));
}
})
}
});

});

А вот и код php

<?php
header('Content-Type: json; charset=utf-8');
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test_db";
// Create connection
$con = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($con->connect_error) {
die("Connection failed: " . $con->connect_error);
}

if (!$con->set_charset("utf8")) {
printf("Error loading character set utf8: %s\n", $con->error);
exit();
} else {
printf("Current character set: %s\n", $con->character_set_name());
}
$request = mysqli_real_escape_string($con, $_POST["query"]);
$query = "SELECT e.id, e.name
FROM test_db.employees as e
WHERE  e.lang_code='hindi' AND e.name LIKE '%".$request."%'
";

$result = mysqli_query($con, $query);
$data = array();
if(mysqli_num_rows($result) > 0)
{
while($row = mysqli_fetch_assoc($result))
{
$data[$row["id"]] = $row["name"];
}
echo json_encode($data, JSON_UNESCAPED_UNICODE);
}
?>

Я проверил в браузере элемент проверки и обнаружил, что php правильно получает все значения в формате utf-8 из mysql. Но Ajax не получает его. Но если я удаляю $ con> set_charset («utf8»), то Ajax получает его в только английский но для другого языка это отображает ?????? формат.
После извлечения элементов из массива php, я не правильно закодировал их в формате utf-8.
Помогите мне, пожалуйста.

0

Решение

Задача ещё не решена.

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

Других решений пока нет …

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