我正在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)。
你有什么想法吗?请随时询问更多详细信息:)
发布于 2020-05-06 16:10:11
好了,我想明白了!
实际上,语言"fr_FR.utf8“不适用于重音和特殊字符,而"en_US.utf8”似乎是唯一的解决方案。
我的服务器上的默认语言是POSIX,它也不支持重音。
要使其正常工作,请在php脚本中放置以下行
$locale = 'en_US.utf8';
setlocale(LC_ALL, $locale);
putenv('LC_ALL='.$locale);
https://stackoverflow.com/questions/61555691
复制