6

当我从控制台执行此命令“sendsms XXXXXXXXX 'śćźłóśadad'”时,一切正常。但是当我用 exec("sendsms XXXXXXXXX 'śćźłóśadad'"); 在 php 中执行它时 味精的正文没有波兰字母。Debian 控制台是 UTF-8,php 文件是 UTF-8。当我从 cli 执行这个 php 文件时,一切正常,但问题是当我从浏览器(同一个文件)运行它时。为什么 ?如何解决?

4

1 回答 1

9

当您通过 CLI 接口运行脚本时,子进程会继承其父进程的环境,其中包含变量LANG,用于将字节的编码传递给底层 C 运行时。

可能当您通过 mod_php 执行程序时,LANG未设置。所以你可以通过自己配置成功:

<?php
putenv('LANG=en_US.UTF-8');
exec("sendsms 888888888 cosśźćłó"); 
于 2013-03-14T10:47:44.687 回答