Кодировка символов командной строки из PHP exec () - PullRequest
6 голосов
/ 05 августа 2010

Я пытаюсь передать текст UTF-8 в качестве аргумента программе командной строки с помощью функции exec php, и у меня возникли проблемы.Я подозреваю, что это связано с проблемами кодировки символов.

Когда я вызываю locale charmap из командной строки, я получаю: UTF-8.

Но когда я делаю:

<?php echo exec('locale charmap'); ?>

Я получаю

ANSI_X3.4-1968

Как я могу это изменить?Это не то, что я хочу установить один раз - я буду работать с разными языками / кодировками, поэтому каждый вызов exec() может потребовать другого.Но даже знание того, как один раз установить его на UTF-8, будет полезно.

1 Ответ

13 голосов
/ 05 августа 2010

Перед командой введите LANG = <language>.UTF8.

Пример:

$ php -r "echo exec('LANG=\"en_US.UTF8\" locale charmap');"
UTF-8
$ php -r "echo exec('LANG=\"en_US.iso88591\" locale charmap');
ISO-8859-1

У вас должен быть установлен языковой стандарт.

...