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

时间:2010-08-04 22:38:19

标签: php encoding exec character-encoding

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

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

但是当我这样做时:

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

我得到了

ANSI_X3.4-1968

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

1 个答案:

答案 0 :(得分: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

您应该安装区域设置。