«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему json_encode() не может кодировать символы с акцентом из базы данных MySQL с помощью кодировки Latin1?

Почему json_encode() не может кодировать символы с акцентом из базы данных MySQL с помощью кодировки Latin1?

Опубликовано 7 ноября 2024 г.
Просматривать:254

Why Does json_encode() Fail To Encode Accented Characters From a MySQL Database with Latin1 Encoding?

Проблемы с кодировкой JSON с символами UTF-8 в MySQL

При попытке получить символы с диакритическими знаками из базы данных с кодировкой latin1_swedish_ci и закодировать их в JSON с помощью json_encode(), результат может быть неожиданным. Предполагаемый результат, например «Abord â Plouffe», преобразуется в «null», что делает закодированный JSON недействительным.

Чтобы решить эту проблему, необходимо явно закодировать полученные значения в UTF-8 перед применение json_encode(). Это гарантирует, что выходные данные JSON будут содержать правильные символы UTF-8 и будут проверены соответствующим образом. Вот как реализовать это решение:

// Initialize an empty array for the encoded result set
$rows = array();

// Iterate over the PHPMyAdmin result set
while ($row = mysql_fetch_assoc($result)) {
  // Apply UTF-8 encoding to each row value
  $rows[] = array_map('utf8_encode', $row);
}

// Output the encoded $rows
echo json_encode($rows);

В этом модифицированном коде мы используем функцию array_map для применения utf8_encode к каждому элементу каждой строки в наборе результатов. Это гарантирует, что все символы будут правильно закодированы в UTF-8 перед выполнением json_encode. Следовательно, результирующий вывод JSON будет точно отражать предполагаемые символы, сохраняя символы с диакритическими знаками по желанию.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3