@eugene159

Запускаю один и тот же php файл на разных хостингах через SSH. На одном выводятся кракозябры. На другом нормальный текст. Как исправить?

Вот содержимое php файла:
<?php
echo 'Ну привет';

Выполняю на beget, возвращается:
Ну привет
Выполняю на reg.ru, возвращается:
Ну привет
Как мне сделать, чтобы на reg.ru тоже возвращалось "Ну привет"? Я понимаю, что дело в настройках веб-сервера хостинга. Но возможно ли поменять эти настройки, если скрипт запускается через SSH? Я попробовал написать так перед echo:
ini_set('mbstring.internal_encoding', 'UTF-8');
ini_set('mbstring.func_overload', 7);
ini_set('default_charset', 'utf-8');
header('Content-Type: text/html; charset=UTF-8');

Но это не помогло. Что еще можно попробовать?
  • Вопрос задан
  • 63 просмотра
Пригласить эксперта
Ответы на вопрос 2
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
На reg.ru в консоли выполнить команду export LANG=en_US.UTF-8
Если не понравится - перезайти по SSH, вернётся к старому значению.
Ответ написан
@none7
В PHP строки это просто массивы байт. Какая была кодировка php-файла в той echo и вывел. Чтобы корректно делать вывод в консоль нужно выяснять кодировку консоли и конвертировать строки из кодировки файла или БД в кодировку консоли. Всё это нужно сделать самостоятельно, а не через опции. Функция header предназначена только для запуска скрипта web-сервером и к запуску скриптов из консоли отношения не имеет. Строчка ini_set('default_charset', 'utf-8'); тоже.
См. $_ENV["LANG"] и на функции mb_*.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы