Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: escapeshellcmd не работает с кириллицей в кодировке UTF-8  (Прочитано 1056 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн androgin

  • Автор темы
  • Любитель
  • *
  • Сообщений: 90
    • Просмотр профиля
    • Black-Sun
команда PHP "echo escapeshellcmd("??asdhdфрвполфыпвлфоывепфлывпajah\'\|\|");" выводит: "\?\?asdhdajah\\\'\\\|\\\|" ...
никак не могу понять - почему?

setlocale(LC_ALL, 'ru_RU.UTF-8'); не помогает :(

Хорошо там, где нас нет. А там, где мы есть - ещё лучше.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28466
    • Просмотр профиля
В какой кодировке сохранён скрипт и какая кодировка установлена в PHP ? (Все три)
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн androgin

  • Автор темы
  • Любитель
  • *
  • Сообщений: 90
    • Просмотр профиля
    • Black-Sun
скрипт - utf-8,
в php.ini  - default_charset - utf-8,

а про третью не понял - там есть iconv кодировка, есть mb  - другой не нашел
Хорошо там, где нас нет. А там, где мы есть - ещё лучше.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28466
    • Просмотр профиля
Три кодировки - это кодировка входных данных, кодировка выходных данных и внутренняя кодировка.
default_charset ни к одной из них не относится.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн androgin

  • Автор темы
  • Любитель
  • *
  • Сообщений: 90
    • Просмотр профиля
    • Black-Sun
короче вот содержание файла esc.php :
<?php
echo escapeshellcmd("??asdhdфрвполфыпвлфоывепфлывпajah\'\|\|");
?>

Файл сохранен в utf-8. Т.к. других кодировок нигде не указано, то выводная кодировка берется из default_charset, соответственно выходная кодировка utf-8.

А где смотреть кодировку самого escapeshellcmd?
Хорошо там, где нас нет. А там, где мы есть - ещё лучше.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28466
    • Просмотр профиля
Мда... начинаем ликбез.
default_charset влияет ТОЛЬКО на значение заголовка "Content-type".
Больше ни на что.

P.S.
Читая php.net, могу сказать, что эта функция вообще нормально не рабоатет, и полагаться на неё не стоит.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн androgin

  • Автор темы
  • Любитель
  • *
  • Сообщений: 90
    • Просмотр профиля
    • Black-Sun
Спасибо, но я не за ликбезом сюда пришел. Я знаю, что он влияет на контент тайп, а как раз контент тайп и определяет какую кодировку давать выводным данным. Если я дефолт_чарсет поставлю cp-1251, он выведет  мне ответ в cp-1251.
 
У тебя есть предположения почему escapeshellcmd теряет кириллицу?
Хорошо там, где нас нет. А там, где мы есть - ещё лучше.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28466
    • Просмотр профиля
а как раз контент тайп и определяет какую кодировку давать выводным данным.

Когда ты на дерьмо вешаешь табличку "конфетка", конфеткой оно не становится.
Так и Content-type ни на что не влияет. Проверь сам.

Свои предположения я уже высказал - функция просто не работает и полагаться на неё не стоит.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн androgin

  • Автор темы
  • Любитель
  • *
  • Сообщений: 90
    • Просмотр профиля
    • Black-Sun
а как раз контент тайп и определяет какую кодировку давать выводным данным.

Когда ты на дерьмо вешаешь табличку "конфетка", конфеткой оно не становится.
Так и Content-type ни на что не влияет. Проверь сам.

Свои предположения я уже высказал - функция просто не работает и полагаться на неё не стоит.

сто раз проверял. выдаваемый контент зависит от default_charset, ежели, конечно, нигде в другом месте кодировка не переопределяется.
ётить, твои "предположения" я услышал только о кодировках, о escapeshellcmd ты не сказал ни слова.
не важно какая функция, она есть и она нужна, не нужна была бы - просто переделал все её вхождения.
Хорошо там, где нас нет. А там, где мы есть - ещё лучше.

 

Страница сгенерирована за 0.052 секунд. Запросов: 23.