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

Почему происходит сбой `json_encode()` при кодировании одинарных кавычек в PHP с помощью кодировки Windows-1252?

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

Why Does `json_encode()` Fail When Encoding Single Quotes in PHP with Windows-1252 Encoding?

Ошибка PHP json_encode с одинарными кавычками

В сценарии, включающем объект PHP stdClass ($post), неожиданно выполняется функция json_encode() не удается закодировать свойство post_title, в результате чего в выходных данных JSON появляется нулевое значение. Несмотря на очевидную кодировку базы данных UTF-8, похоже, что процесс получения данных настроен неправильно.

Причина: неверная кодировка

Кодировка JSON Проблема связана с неправильным кодированием одинарной кавычки в post_title. В частности, этот символ закодирован в Windows-1252, в результате чего получается шестнадцатеричное значение 92, которое не является допустимым символом UTF-8.

Решение: установите кодировку подключения к базе данных

Чтобы решить эту проблему, необходимо установить кодировку подключения к базе данных UTF-8. Используемый метод зависит от используемого API:

  • MySQL: mysql_set_charset("utf8")
  • MySQLi: mysqli_set_charset("utf8")
  • PDO (PHP > = 5.3.6): параметр набора символов в строке подключения
  • PDO (более ранние версии): SET NAMES utf8

Дополнительные соображения

Важно отметить, что установка кодировки соединения гарантирует, что данные, полученные из базы данных, будут правильно закодированы в UTF-8. Однако если данные хранятся в неправильной кодировке, например Windows-1252, может потребоваться преобразование вручную с помощью utf8_encode() или других средств.

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

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

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

Copyright© 2022 湘ICP备2022001581号-3