У меня есть PHP-скрипт:
<?php
$cmd_desformat = "/usr/local/bin/process /tmp/input.txt > /tmp/output.txt";
shell_exec($cmd_desformat);
Где input.txt - это файл UTF-8 (проверяется с помощью «file -i»), содержащий:
Buenos días
и / usr / local / bin / process - это исполняемый двоичный файл стороннего разработчика, который я широко использовал и никогда не сталкивался с этой проблемой.
Ну, проблема в том, что когда я выполняю это из браузера:
http://localhost/test.php
Результатом output.txt является файл US-ASCII, содержащий:
Buenos d?as [][
Однако, когда я выполняю это из командной строки:
php test.php
Результат output.txt - это файл UTF-8 с ожидаемым:
Buenos días [][
Я попытался выполнить из командной строки с пользователем www-data
, чтобы посмотреть, смогу ли я повторить поведение браузера, но результат опять-таки правильный. Я также пытался использовать exec
вместо shell_exec
, но результаты те же. Также пробовал с Firefox и Chrome.
Мне нужно, чтобы он работал при вызове из браузера. Есть идеи?