2013-03-14 62 views
4

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

+1

什么是“无波兰字母”?他们是出来作为mojibake,还是他们完全忽略? – 2013-03-14 09:58:04

+0

cosśźć=> cos(切断字符串) – mitch 2013-03-14 09:59:24

+0

_但问题是当我从browser_运行它 - 是“cosśźć”用户输入?如果是这样,听起来像你的HTML页面缺少一个UTF-8元标签,你的脚本收到的字符串不是你的想法。 – AD7six 2013-03-14 10:02:31

回答

5

当您通过CLI界面运行脚本时,子进程将继承其父环境,该环境包含变量LANG,用于将字节编码传递到底层C运行时。

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

<?php 
putenv('LANG=en_US.UTF-8'); 
exec("sendsms 888888888 cosśźćłó");