【发布时间】:2020-08-16 17:20:32
【问题描述】:
我正在 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)。
你有什么想法吗?请随时询问更多详细信息:)
【问题讨论】:
-
您展示了一个有帮助的数据结构,但您未能展示源代码。我相信你很清楚这是一个编程网站。有人可能会说我应该“更好地”这样说。好的方法是你的问题在哪里?
-
如果问题出在 Windows - 在 Windows 上,底层管道以文本模式打开,这可能导致函数无法进行二进制输出。考虑使用 popen() 代替这种情况。(来自
shell_exec()的手册) -
@GetSet 没有更多的代码......唯一涉及的一行是我在帖子介绍中写下的那一行,即 $info = shell_exec("mkvmerge -J '".$chemin_fichier. "'")。
-
@NigelRen 我的问题是在 linux 上...但是在 windows 上,我运行完全相同的命令绝对没有问题 :-)
-
那似乎是
mkvmerge的问题?作为程序员(您),您不能将文件重命名为mkvmerge可以理解的合适格式吗?
标签: php exec encode diacritics truncated