У меня есть поле в базе данных MySQL (utf8_general_ci), которая содержит кудрявый (умный?) Апостроф: Owner's...
Это отлично печатает без специальной обработки, если я получаю доступ к странице PHP, которая извлекает ее из БД. Тем не менее, я пытаюсь получить к нему доступ через запрос $ .getJSON на другой странице, поэтому я использовал json_encode PHP. Он обрезает значение так, чтобы он читал « Owner
, а затем успешно кодировал остальные данные. Если я использую PHP utf8_encode в поле до json_encode, он включает полное значение с '
закодированным до», которое затем не печатает ничего на странице, предоставляя мне Owners
. PHP- htmlentities
и htmlspecialchars
не влияют.
Рассматривая запрос в инструментах Chrome, Owner's
отображается как Owner s
на странице $ .getJSON.
Может кто-нибудь помочь мне здесь? Я прочитал другие вопросы о SO и в Интернете, но я не могу найти ничего, что помогает, и я не много работал с JSON.
Спасибо за прочтение.
Подробнее: json_encode
Пример:
echo json_encode($array, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE);
Используя utf8_encode()
PHP, utf8_encode()
чем мой json_encode()
действительно остановил данные после отключения после '
но он также закодировал его до \0092
который не отображался (управляющий символ). Когда я использовал MySQL SET NAMES utf8
перед моим запросом, мне не пришлось вообще использовать utf8_encode()
, и мой json был правильно закодирован с '
mapping to \u2019
, который отображается хорошо.
Спасибо за ссылку @Pekka, это помогло мне сузить возможности.