Как решить проблемы кодирования PHP?
Если вы когда-нибудь работали с json в php..может быть, вы столкнулись с некоторыми проблемами с функцией json_encode ().
Поэтому в этом гайде я хотел бы поделиться двумя проблемами, с которыми столкнулся:
Первая проблема, когда json_encode возвращает недопустимый код в chrome,но при этом хорошо работает с firefox или другими браузерами.
Ответ : перейдите в notepad++ , выберите меню «Encoding», затем «Encodein UTF-8 without BOM» или с помощью phpstorm перейдите в “file”,а затем удалите bom
Вторая проблема с функцией jeson_encode, возвращающей недопустимый код при попытке преобразовать массив, содержащий специальные символы или html-теги .
Ответ : используйте второй параметр для добавления констант для определения и преобразования этих тегов:
- $a = array(‘<foo>’,» ‘bar'»,’ «baz»‘,’&blong&’, «\xc3\xa9»);
- echo «Normal: «, json_encode($a), «\n»;
- echo «Tags: «, json_encode($a, JSON_HEX_TAG), «\n»;
- echo «Apos: «, json_encode($a, JSON_HEX_APOS), «\n»;
- echo «Quot: «, json_encode($a, JSON_HEX_QUOT), «\n»;
- echo «Amp: «, json_encode($a, JSON_HEX_AMP), «\n»;
- echo «Unicode: «, json_encode($a, JSON_UNESCAPED_UNICODE), «\n»;
- echo «All: «, json_encode($a, JSON_HEX_TAG | JSON_HEX_APOS
- | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE), «\n\n»;
Кроме того, если вы хотите отследить ошибки json и не знаете, откуда они берутся, вы можете использовать json_last_error с json_last_error_msg для отображения и отслеживания ошибки. Чтобы абсолютно раз и навсегда убедиться, что у вас больше никогда не будет проблем с кодированием — используйте UTF-8 везде и на всем!
Установите для всех таблиц в вашей базе данных параметры сортировки «utf8_general_ci». Как только вы установите соединение с базой данных, выполните следующий SQL-запрос: «SETNAMES ‘utf8′» Убедитесь, что настройки вашего редактора настроены на кодировку UTF-8. Имейте следующий мета тег в разделе ваших HTML документов:
<meta http-equiv=»content-type» content=»text/html; charset=utf-8″>
Когда вы используете PHP для манипулирования строками, используйте многобайтовые функции.
Вы можете просто использовать один простой файл конфигурации на стороне сервера, который позаботится обо всех кодировках.
В этом случае вам вообще не понадобятся заголовочные и/или мета-теги или модификация файла php.ini. Просто добавьте нужную кодировку набора символов в файл .htaccess и поместите его в корневой каталог www. Если вы хотите возиться со строками набора символов и использовать для этого свой php — код-это совсем другая история. Конечно, параметры сортировки базы данных должны быть правильными.