Смена кодировки консоли из скрипта

Тема в разделе "PHP Pro", создана пользователем latteo, 7 июн 2011.

Статус темы:
Закрыта.
  1. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.450
    Симпатии:
    1.244
    Вот пример кода как это я пытаюсь сделать:

    PHP:
    $string "\nEnglish VS русский ё VS український і VS ...\n";


    system ('chcp 1251');
    system  ('mode con: cp select=1251');
    sleep (1);
    echo 
    $string;

    shell_exec ('chcp 1251');
    shell_exec  ('mode con: cp select=1251');
    sleep (1);
    echo 
    $string;

    exec ('chcp 1251');
    exec  ('mode con: cp select=1251');
    sleep (1);
    echo 
    $string;

    system ('chcp.bat'); // mode con: cp select=1251
    sleep (1);
    echo 
    $string;
    скрипт сохранен в ansi кодировке. До этого пробовал с utf - тоже безуспешно.
    Все функции отчитываются об успешном выполнении команды и изменении кодовой странице, на практики же скрипт выводится в бракозяблах. Выполнение любой из команд для смены кодировки в консоли перед выполнением скрипта приводит к желаемому результату, так что системный глюк исключаю.
    Баловство с default_charsetв php.ini видимых изменений не даю.
    Какие есть идеи?
     
  2. e64f

    e64f Постоялец

    Регистр.:
    2 ноя 2008
    Сообщения:
    95
    Симпатии:
    6
    А не проще не менять кодировку консоли?!

    Работайте в текущей кодировке, а вывод консоли конвертируйте в нужную кодировку.


    И еще у вас в скрипте, 3 раза одно и то же написано, может в этом дело?
     
  3. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.450
    Симпатии:
    1.244
    Подстраиватся под кодировку консоли это конечно решение хорошее, но оно не всегда является оптимальным. Да и уже из спортивного интереса хочется разобратся в чем косяк.

    В скрипте 3 раза вызываются одинаковые функции консоли, но через разные php функции в надежде, что хоть одна да сработает... Применение их по отдельности тоже результата не дает.
     
Статус темы:
Закрыта.