Почему setlocale() и parse_url() портят кодировку IDNA на Mac OSX?

setlocale(LC_ALL, "ru_RU.UTF-8");
die(parse_url('http://пример.рф', PHP_URL_HOST));

После выполенения данного кода, я получаю - п�_име�_.�_�_.
Однако, если убрать вызов функции setlocale(), то все будет хорошо.

Конфигурация:
Mac OS X: 10.9.3
Apache: Apache/2.2.26 (Unix) DAV/2 PHP/5.5.13 mod_ssl/2.2.26 OpenSSL/0.9.8y
  • Вопрос задан
  • 2573 просмотра
Пригласить эксперта
Ответы на вопрос 1
В php.ini есть директива default_charsetПо умолчанию она должна стоять в UTF-8.

Проверить это можно запустив:

phpinfo();
После, поиском найти default_charset и посмотреть тип кодировки.

Если стандартная кодировка не UTF-8, тогда добавьте в php.ini в самый конец:

default_charset = "UTF-8"
После перезапустите httpd сервер, чтобы заново прочитать php.ini

Дополнительно .htaccess добавьте:
AddDefaultCharset UTF-8
В скрипте помимо всего прочего дабавьте:
putenv( 'LC_ALL=ru_RU.utf8' );
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы