php exec输出由于重音而被截断



我正在linux服务器上构建一个网站,该网站可以使用mkvmerge命令行提供有关mkv文件的一些信息,但在使用命令$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(

你知道吗?请随时询问更多详细信息:(

好吧,我想明白了!

实际上,"fr_fr.utf8"语言不适用于重音符号和特殊字符,而"en_US.utf8"似乎是唯一的解决方案。

我的服务器上的默认语言是POSIX,它也不允许重音符号。

要使事情正常工作,请在php脚本中放置以下行

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

最新更新