escapeshellarg убирает русские буквы

warobushek

Новичок
escapeshellarg убирает русские буквы

Использую друпал. В нем кодировка UTF-8 везде.
Соответственно и в моем модуле.


Столкнулся со тем, что escapeshellarg убирает русские буквы из параметра, который ему передается

На php.net написано что для не латинских символов нужно устанавливать LC_ALL (но как я понял достаточно LC_COLLATE и LC_TYPE).

В этой теме , мне ответили, что такого нельзя писать в коде модуля.

Как же решить этот вопрос тогда?
 

baev

‹°°¬•
Команда форума
такого нельзя писать в коде модуля
— какого «такого»?
Если используется utf8, то и локаль нужно соответствующую прописывать.

Вы из своего модуля шелл-скрипты вызываете? То, что в системе другая локаль может быть установлена, Вы в курсе?
 

warobushek

Новичок
Автор оригинала: baev
— какого «такого»?
По ссылке которую я привел, мне сказали насчет вот этого кода, который был до переноса на друпал
<?php setlocale(LC_CTYPE, 'ru_RU.cp1251');
setlocale(LC_COLLATE, 'ru_RU.cp1251');
?>
Вы из своего модуля шелл-скрипты вызываете?
Именно так.

То, что в системе другая локаль может быть установлена, Вы в курсе?
какую систему Вы имеете ввиду?
Если честно, впервые имею с дело шеллом. поэтому и спрашиваю


Тем не менее я сделал пока так, но посылать в шелл еще не рискнул.
setlocale(LC_ALL, 'ru_RU.UTF-8');
поставил перед выполнением escapeshellarg.



Может быть Вы проясните для меня ситуацию:
то что я написал скажется только на
а. функции, внутри которой это написано
б. скрипта, кот. вып-ся (мое предположение)


Можно ли так делать?
 

baev

‹°°¬•
Команда форума
какую систему Вы имеете ввиду?
— операционную.

впервые имею с дело шеллом
— у меня большие сомнения в том, что Вам это действительно нужно.
Объясните задачу в целом: что Вы пытаетесь добиться, вызывая шелл-скрипты, и почему этого нельзя сделать без шелл-скриптов?
 

warobushek

Новичок
> это действительно нужно.

Добавить пользователя. Вобщем это необходимо. Задачу не я себе ставлю.

Вобщем, то что я написал выше setlocale(LC_ALL, 'ru_RU.UTF-8');
помогло.

Пользователь добавляется.


Основной вопрос сейчас - область действия setlocale() ?
Подскажете? Чегото в доке не увидел подобных примечаний.
 

fixxxer

К.О.
Партнер клуба
область действия:

при работе с нетредовым php - в рамках процесса
при работе с тредовым - то же самое (то есть - непредсказуемое поведение)
 
Сверху