我尝试使用 php 的 exec
函数将 UTF-8 文本作为参数传递给命令行程序,但遇到了问题。我怀疑这是由于字符编码问题。
当我从命令行调用 locale charmap
时,我得到:UTF-8
。
但是当我这样做的时候:
<?php echo exec('locale charmap'); ?>
我明白了
ANSI_X3.4-1968
我怎样才能改变这个?这不是我想设置一次的东西——我可能会使用不同的语言/编码,所以每次调用 exec()
都可能需要不同的。但即使知道如何将其设置为 UTF-8
一次也会有所帮助。
最佳答案
在命令前加上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
您应该安装了语言环境。
关于php - 来自 PHP 的 exec() 的命令行字符编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3410424/