php exe c вывод становится усеченным из-за ударений - PullRequest
0 голосов
/ 02 мая 2020

Я создаю веб-сайт на сервере linux, который может предоставить некоторую информацию о файле mkv с помощью командной строки mkvmerge, но я сталкиваюсь с большой проблемой при использовании команды $info = shell_exec("mkvmerge -J '".$chemin_fichier."'");, когда выходные данные командной строки содержат акценты, вывод обрезается:

зарезервированный вывод:

{
  "container": {
    "properties": {
      "is_providing_timestamps": true,
      "title": "Le Bel Été 2019"
    },
    "type": "Matroska"
  }
}

фактический вывод:

{
  "container": {
    "properties": {
      "is_providing_timestamps": true,
      "title": "Le Bel

Я обнаружил в Интернете, что нам нужно изменить язык среды [использующий putenv () и setlocale ()], который я сделал, но он не работал. Но я могу определить некоторые переменные, используя акценты, так что это довольно странно.

в любом случае, когда я запускаю один и тот же файл на моем компьютере, используя сервер wamp, или ту же командную строку в моем linux серверном терминале, я ' Я получаю правильный вывод, так что я думаю, что проблема в php (7.3) или apache (2.4).

У вас есть идеи? Не стесняйтесь спрашивать дополнительные детали:)

1 Ответ

0 голосов
/ 06 мая 2020

Хорошо, так что я понял!

На самом деле, язык "fr_FR.utf8" не работает для акцентов и специальных символов, в то время как "en_US.utf8", кажется, единственное решение.

языком по умолчанию на моем сервере был POSIX, который также не позволяет использовать акценты.

, чтобы заставить вещи работать, поместите следующие строки в ваш php скрипт

$locale = 'en_US.utf8';
setlocale(LC_ALL, $locale);
putenv('LC_ALL='.$locale);
...