php - 来自 PHP 的 exec() 的命令行字符编码

标签 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 一次也会有所帮助。

最佳答案

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

相关文章:

php - 在 PHP 中选择 WHERE x = $array[index]?

php - php异常处理,无error_reporting

android - 从 Android 应用提交的文本编码不正确

php - 如何使用 Shift-JIS 和 CP932 创建 SQL 注入(inject)攻击?

xml - 对 xml 不友好的 utf-8 字符是什么?

c - 如何对位置未知的命令使用 execv?

c# - 清除网络浏览器控件中的选择

c - Popen 和 execl 未给出用户定义程序的输出

php - select 命令在 php/mysql 中不起作用

php - 在 jquery 中 append php