В дополнение к настройке default_charset
в php.ini, вы можете отправить правильный набор символов, используя header()
из вашего кода, перед любым выводом:
header('Content-Type: text/html; charset=utf-8');
Работать с Unicode в PHP легко, если вы понимаете, что большинство строковых функций не работают с Unicode, а некоторые могут полностью искажать строки . PHP считает "символы" длиной 1 байт. Иногда это нормально (например, explode()
только ищет последовательность байтов и использует ее в качестве разделителя - поэтому не имеет значения, какие именно символы вы ищете). Но в других случаях, когда функция фактически предназначена для работы с символами , PHP не знает, что ваш текст содержит многобайтовые символы, которые можно найти с помощью Unicode.
Хорошая библиотека для проверки: phputf8 . Это переписывает все «плохие» функции, чтобы вы могли безопасно работать со строками UTF8. Существуют такие расширения, как расширение mbstring, которые пытаются сделать это и для вас, но я предпочитаю использовать библиотеку, потому что она более переносима (но я пишу продукты для массового рынка, поэтому это важно для меня). Но phputf8 может в любом случае использовать mbstring для повышения производительности.