Я пытался решить эту проблему больше недели.
У меня есть база данных MySQL utf8_general_ci.
Когда я печатаю результат в формате JSON с помощью php, символы не кодируются UTF8.
Значения, хранящиеся в базе данных, на арабском языке.
Вот код, который я использую
db.php
<?php
$DBhost = "xx.xx.xx.x";
$DBusername = "username";
$DBpassword = "password";
$db_name = "bdname";
$connect = mysql_connect("$DBhost", "$DBusername", "$DBpassword")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
?>
и код для печати результатов
Show.php
<?php
include('db.php');
$tbl_name = "table_name";
mysql_set_charset('utf8');
$sth = mysql_query("SELECT * FROM $tbl_name");
$rows = array();
while($r = mysql_fetch_assoc($sth)) {
$rows[] = array_map('utf8_encode', $r);
}
print json_encode($rows);
?>
Пример вывода:
[{"id":"4","news_id":"1","caption":"ÃÃÃÃà à áÃÃæáà ÃáãÃÃÃà à ÃáÃÃãÃà áÃÃà ÃáÃÃã"
Из моего поиска я понял, что /u00 — это latin1, а UTF8 должен начинаться с /u0, а не два 0.
Пробовал разные методы преобразования latin1 в UTF8, такие как iconv и decode_json , изменяя mysql_set_charset в latin1 и даже удалив его, добавил заголовок html, используя кодировку UTF8,latin1 и windows-1526, также те же результаты, и иногда я получаю null результат для вывода caption.
У меня нет вариантов здесь, и я действительно не знаю, что делать
Есть идеи ?