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

6

我正在尝试使用php的exec函数将UTF-8文本作为参数传递给命令行程序,但遇到了问题。我怀疑是由于字符编码问题引起的。

当我在命令行中调用locale charmap时,我得到的是:UTF-8

但是当我执行以下操作时:

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

我得到了 "ANSI_X3.4-1968",我该如何更改呢?这不是我想要设置的一次性选项 —— 我可能会使用不同的语言/编码,因此每个调用 exec() 都可能需要不同的编码方式。但即使只知道如何将其设置为 UTF-8 也会很有帮助。
1个回答

14

在命令前加上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

您应该已经安装了语言环境。


救命稻草。非常感激。 - András Szepesházi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接