来自PHP的命令行字符编码';行政长官()

来自PHP的命令行字符编码';行政长官(),php,encoding,exec,character-encoding,Php,Encoding,Exec,Character Encoding,我试图使用php的exec函数将UTF-8文本作为参数传递给命令行程序,但一直存在问题。我怀疑是因为字符编码问题 当我从命令行调用locale charmap时,我得到:UTF-8 但当我这样做的时候: <?php echo exec('locale charmap'); ?> 我明白了 ANSI_X3.4-1968 我怎样才能改变这个?这不是我想设置一次的东西——我可能会使用不同的语言/编码,因此每次调用exec()都可能需要不同的语言/编码。但是,即使知道如何将其设置为UT

我试图使用php的
exec
函数将UTF-8文本作为参数传递给命令行程序,但一直存在问题。我怀疑是因为字符编码问题

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

但当我这样做的时候:

<?php echo exec('locale charmap'); ?>

我明白了

ANSI_X3.4-1968


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

在命令前面加上
LANG=.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 $php-r“echo exec('LANG=\'en\u US.UTF8\'locale charmap') UTF-8 $php-r“echo exec('LANG=\'en\u US.iso88591\'locale charmap'); ISO-8859-1
您应该安装区域设置。

Life saver。非常感谢。