php exec 输出因重音符号而被截断
php exec output is getting truncade truncated because of accents
我正在 linux 服务器上构建一个网站,它可以使用 mkvmerge 命令行提供有关 mkv 文件的一些信息,但是我在使用命令 $info = shell_exec("mkvmerge -J '".$chemin_fichier."'");
时遇到了一个大问题
当命令行的输出包含重音符号时,输出被 t运行cated :
预期输出:
{
"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);
我正在 linux 服务器上构建一个网站,它可以使用 mkvmerge 命令行提供有关 mkv 文件的一些信息,但是我在使用命令 $info = shell_exec("mkvmerge -J '".$chemin_fichier."'");
时遇到了一个大问题
当命令行的输出包含重音符号时,输出被 t运行cated :
预期输出:
{
"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);