У меня есть код PHP, который я использую, чтобы извлекать записи из базы данных, помещать их в массив, помещать этот массив в другой массив и затем форматировать этот массив в JSON. Подключение к базе данных и извлечение информации отлично работают, как и создание второго массива и преобразование в JSON. Но некоторые записи (12 из 175), по-видимому, становятся пустым, когда помещаются в первый массив. Я уверен, что это имеет какое-то отношение к неэкранированным и нестандартным символам, но я не могу для жизни понять, что мне нужно сделать, чтобы убедиться, что он правильно добавлен в массив. Я пробовал добавить addslashes
и htmlentities
, чтобы убедиться, что это не стандартная проблема выхода, но это все еще происходит. Все записи в настоящее время кодируются как ASCII.Нечетная проблема с экранированными записями и добавлением в массив
Вот результаты, которые идут вверх пустым при добавлении в массив:
A Gentlewoman’s Lament
By true record of the Doctor Bede
A Lover’s Lament
Complaint þat Crist maketh of his Passioun
How þe louer is sett to serve þe floure
Fifteen O’s of Christ
Balade made by Lydgate at þe Departyng of Thomas Chaucyer on Ambassade into France
On the Mutability of Man’s Nature due to the Seasons, the Elements, the Complexions, and the Planets
That now is hay þat sumtyme was grasse
Balade on a New Year’s Gift of an Eagle presented to King Henry VI in 1428
Everything draweþe to his semblable
Pélerinage de la vie humaine
И вот код, который я использую, чтобы вытащить эту информацию из результатов SQL:
while ($row = $work_result->fetch_array())
{
echo $row['Work'] . "<BR/>";
$encoding = mb_detect_encoding(htmlentities($row['Work']));
$work_array = array('id'=>$row['id'],'name'=>addslashes(htmlentities($row['Work'])),'encoding'=>$encoding, 'type'=>'work','color'=>'midnightblue');
var_dump($work_array);
echo "<BR/>";
array_push($array, $work_array);
}
I 'м при полной потере. Я уверен, что есть функция, которую я просто не использую, но что это такое, я понятия не имею. Любая помощь будет оценена по достоинству.
Где находится код преобразования JSON? Возможно, вы используете строку non-utf8 с 'json_encode', которая поддерживает только utf8. – AlexM
Строки - это ASCII, и я понимаю, что utf8 является надмножеством ASCII. Еще мой код для конвертации в JSON: 'json_encode ($ items_array);' '$ items_array' - это больший массив, из которого эти массивы являются частью. – medievalmatt
Просто чтобы проверить, я добавил в свой код конкретную инструкцию utf8_encode, чтобы она указывала \t $ test_array = array ('id' => $ row ['id'], 'name' => utf8_encode (addslashes (htmlentities (htmlentities (htmlentities) $ row ['Work']))), 'encoding' => $ encoding, 'type' => 'work', 'color' => 'midnightblue'); Это не имеет никакого эффекта. – medievalmatt