權限:hunspell
和php5
。從慶典使用utf-8文本輸入通過shell_exec調用程序
測試代碼:
[email protected] ~/ $ echo 'sagadījās' | hunspell -d lv_LV,en_US
Hunspell 1.2.14
+ sagadīties
- 正常工作。
測試代碼(test.php的):
$encoding = "lv_LV.utf-8";
setlocale(LC_CTYPE, $encoding); // test
putenv('LANG='.$encoding); // and another test
$raw_response = shell_exec("LANG=$encoding; echo 'sagadījās' | hunspell -d lv_LV,en_US");
echo $raw_response;
回報
Hunspell 1.2.14
& sagad 5 0: tagad, sagad?ties, sagaudo, sagand?, sagar?o
*
*
截圖(不能用後無效字符代碼):
看來了shell_exec無法處理utf-8正確,或者可能需要一些額外的編碼/解碼?我不得不使用en_US.utf-8來獲得有效的數據。
你試過[''proc_open()'](http://php.net/manual/en/function.proc-open.php)嗎?在我看來,就像將數據直接寫入進程一樣'STDIN比通過shell彈出它更可靠...... – DaveRandom 2012-04-05 13:01:51
@DaveRandom同樣的輸出。但我只是檢查了 - mb_detect_encoding(stream_get_contents($ pipes [1]))返回ASCII。這可能是問題所在。 – 2012-04-05 13:14:19