Какая кодировка вашего файла? Это тоже должно быть UTF8. Какая кодировка по умолчанию вашего http-сервера? Это должен быть и UTF-8.
Кодирование работает, только если:
- файл закодирован правильно
- сервер сообщает кодировку доставленного файла.
При работе с базами данных вам также необходимо установить правильную кодировку для полей БД и , как клиент MySQL взаимодействует с сервером (см. mysql_set_charset()
). Только полей недостаточно, потому что ваш клиент MySQL (в данном случае PHP) может быть установлен в ISO по умолчанию и интерпретирует данные. Таким образом, вы получите UTF8 DB -> ISO client -> внедренный в UTF8 PHP скрипт. Не удивительно, почему в конце все испорчено: -)
Как обслуживать файл с нужной кодировкой?
header('Content-type: text/html; charset=utf-8')
это одно решение
.htaccess файл, содержащий AddDefaultCharset UTF-8
- это еще один
HTML-тип содержимого мета также может работать, но всегда лучше отправлять эту информацию, используя заголовки HTTP.
PS: вы также должны использовать mb_strlen()
, потому что strlen()
в строках UTF8, вероятно, сообщит больше, чем реальная длина.