2013-03-14 45 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śźćłó");