Кириллица fgets() PHP

262
02 октября 2017, 02:23

Не могу разобраться с кодировкой. Данная функция выполняется, и просит запрос ввода. При вводе русских символов происходит следующие... PHP 7.0, запущен в модуле CLI. В итоге fgets возвращает пустую строку размер в количество символов, но не как не русские символы. С английскими символами, все работает отлично. Перепробовал многое, попрошу помощи.

function queryline($prompt = '')//наша функция запроса ввода
{
    echo $prompt;
    $str = fgets(STDIN);
    return iconv('ASCII', 'UTF-8', $str);
}
Answer 1

Во-первых, а вы уверены, что вывод UTF-8 в терминал в вашем конкретном случае отобразится корректно? Попробуйте сначала убедиться, что ваш php-файл сохранен в UTF-8, и сделать просто вывод echo 'русский текст';. Если отобразится корректно - тогда идем далее.

Во-вторых, попробуйте mb_convert_encoding вместо iconv, эта функция должна более корректно определять входящую кодировку. Но это тоже не панацея, т.к. не совсем понятно, в какой кодировке данные приходят с терминала.

Если и это не поможет - попробуйте iconv, но с предварительным явным определением входящей кодировки с помощью mb_detect_encoding.

READ ALSO
GLFW - cannot find -lglfw

GLFW - cannot find -lglfw

Подключил glfw к Code::Blocks , пишет cannot find -lglfw3 причем dll в папке lib-mingw есть

184
boost :: asio server с простыми функциями

boost :: asio server с простыми функциями

ребята, мне действительно нужна ваша помощьЯ изучаю boost :: asio и у меня есть 2 проблемы, которые я не могу делать за день

310
отлов всплывающих подсказок WinAPI

отлов всплывающих подсказок WinAPI

Обычно, всплывающие подсказки реализуются посредством заполнения структуры NOTIFYICONDATA + передачей это структуры в функцию Shell_NotifyIconAЕсли у экземпляра...

269
Поиск в глубину, вопрос из решенной задачи

Поиск в глубину, вопрос из решенной задачи

Разбираю задачу из мазурока:

358