проблемы с немецкими умляутами в php json_encode

Я получаю проблемы с данными из базы данных, содержащей немецкие умлауты. В принципе, всякий раз, когда я получаю данные, содержащие умлауты, это черный квадрат с меткой опроса. Я решил это, поставив

mysql_query ('SET NAMES utf8') 

перед запросом.

Проблема в том, что, как только я использую json_encode(...) в результате запроса, значение, содержащее umlaut, получает null . Я вижу это, вызывая php-файл непосредственно в браузере. Есть ли другое решение, чем замена этих символов перед кодированием на JSON и декодирование его в JS?

Вероятно, вы просто хотите показать тексты как-то в браузере, поэтому одним из вариантов было бы изменение умляутов на объекты HTML с помощью htmlentities() .

Следующий тест работал на меня:

 <?php $test = array( 'bla' => 'äöü' ); $test['bla'] = htmlentities( $test['bla'] ); echo json_encode( $test ); ?> 

Я знаю, что это может быть старым, но здесь лучшее решение:

Определите тип документа с помощью кодировки utf-8:

 <?php header('Content-Type: application/json; charset=utf-8'); ?> 

Убедитесь, что все содержимое utf_encoded. JSON работает только с utf-8!

 function encode_items(&$item, $key) { $item = utf8_encode($item); } array_walk_recursive($rows, 'encode_items'); 

Надеюсь, это поможет кому-то.

Посмотрите на это довольно элегантное решение, упомянутое здесь :

 json_encode($json_full, JSON_UNESCAPED_UNICODE); 

Если проблема не в другом месте вашего кода, это должно исправить ее.

Единственным важным моментом здесь является то, что json_encode () поддерживает только кодировку UTF-8. http://www.php.net/manual/en/function.json-encode.php

Все строковые данные должны кодироваться в кодировке UTF-8.

Поэтому, когда у вас есть специальные символы в строке un utf-8, json_encode вернет значение null.

Таким образом, либо вы переключите весь проект на utf-8, либо убедитесь, что вы используете utf8_encode () любую строку перед использованием json_encode ().

убедитесь, что сам файл перевода был явно сохранен как UTF-8

После этого перезагружаются кеширующие блоки и переводы