Степень "°" не отображается в функции php json_encode, как отобразить это?

Я передаю php-массив, например

[sit_latitude] => 20° 23.298' N

внутри json_encode(); и вывод похож,

  {"sit_latitude":null}

отображает нуль, как это разрешить?

мой фрагмент кода

...
$stmt->bindParam("id", $_GET[id]);
$stmt->execute();
$employee = $stmt->fetchObject();
$dbh = null;
echo '{"item":'. json_encode($employee) .'}';

Ответ 1

что я пробовал и добивался успеха, было немного странно, но работало, поэтому позвольте мне поделиться им с вами.

$latitude = json_encode(utf8_encode($emplyoee['sit_latitude']));
$longitude = json_encode(utf8_encode($employee['sit_longitude']));

   $emplyoee['sit_latitude'] = $latitude;
    $emplyoee['sit_longitude'] = $longitude;

и теперь переходите как

echo '{"item":'. json_encode($employee) .'}';

это решит вашу проблему.

Ответ 2

json_encode предполагает, что строки в своем вводе действительны UTF-8 (keep в виду, что строки PHP представляют собой последовательности байтов, а не последовательности кодов Unicode). Если ваш текстовый редактор не настроен на использование этой кодировки (и вы не вручную сгенерировали UTF-8 с использованием шестнадцатеричных кодов, таких как \xc2\xb0 в строке с двумя кавычками), строка будет закодирована как null ( потому что это недопустимо UTF-8).

Другие распространенные кодировки, такие как Windows-1252, также являются надмножеством ASCII, так что это только проблема, если есть любые символы, отличные от ASCII (U + 00B0 DEGREE SIGN включен).

Даже если строка действительна UTF-8, по умолчанию json_encode выводит \u00b0 вместо фактического знака степени. Это не проблема для программного декодирования с использованием PHP json_decode или JavaScript JSON.parse, которые понимают шестнадцатеричные escape-последовательности JSON.

(В PHP 5.4 существует флаг JSON_UNESCAPED_UNICODE, чтобы предотвратить это экранирование. Однако на многих веб-серверах по-прежнему имеется PHP 5.3 или более поздняя версия, а флаг не позволяет даже проблемным символам U + 2028 LINE SEPARATOR и U + 2029 PARAGRAPH SEPARATOR. Можно моделировать флаг в двух строках кода, хотя, как я объяснил выше, вам все равно не нужно.)

Ответ 3

JSON и экранирующие символы - этот пост может вам помочь.

Просто пройти степень как \u00f8C, а затем декодировать ее с помощью js.