PHP的exec()命令行字符编码

phi*_*reo 6 php encoding exec character-encoding

我正在尝试使用php的exec函数将UTF-8文本作为参数传递给命令行程序并且一直存在问题.我怀疑这是由于字符编码问题.

当我locale charmap从命令行调用时,我得到:UTF-8.

但当我这样做时:

<?php echo exec('locale charmap'); ?>
Run Code Online (Sandbox Code Playgroud)

我明白了

ANSI_X3.4-1968

我怎么能改变这个?这不是我想要设置的东西 - 我将使用不同的语言/编码,因此每次调用exec()可能需要不同的语言/编码.但即使知道如何将其设置为UTF-8一次也会有所帮助.

Art*_*cto 13

使用前缀命令LANG = <language>.UTF8.

例:

$ php -r "echo exec('LANG=\"en_US.UTF8\" locale charmap');"
UTF-8
$ php -r "echo exec('LANG=\"en_US.iso88591\" locale charmap');
ISO-8859-1

您应该安装了语言环境.