2009-08-18 62 views
1

我有一個腳本,它從數據庫中獲取一個字符串,將其拆分爲單詞並將單詞寫入數據庫。當我通過http調用腳本(使用apache web服務器)時,它完美地工作。它也可以從Windows命令行運行它。但是,當我嘗試從ubuntu的命令行(shell)中運行它時,所有瑞典語字符ÅÄÖ在數據庫中被替換爲AAO。很奇怪。來自命令行的瑞典語字符的utf8問題

什麼是apache告訴php,我需要從命令行運行時自己告訴它?

回答

-1

可能ubuntu不接受終端那種東西。嘗試安裝一個插件左右?

這不是真的很奇怪,因爲幾乎所有的命令行的東西都有一些特殊字符的問題。你確定你真的需要嗎?有沒有其他的方式來寫它?我不知道因爲我不是瑞典人。

Apache和PHP只是有那種字符的支持,,,還有什麼可說的別的

+0

我不輸入任何命令行,我只是從那裏執行腳本。我希望它能夠從命令行工作的原因是我想從cron運行它。 – Martin 2009-08-18 10:28:42

+0

執行和輸入給你(幾乎)相同的輸出。 – 2009-08-18 10:35:06

2

MySQL有various parameters處理客戶端編碼。將客戶端字符集設置爲UTF-8或數據庫的字符集應該可以解決您的問題。

+0

做到了,兩者都是utf8,但它沒有幫助。 – Martin 2009-08-18 11:50:15

2

您可以將phpinfo()放在腳本的頂部,以打印所有環境變量,配置設置等。比較在命令行運行時與在apache下運行時的輸出。

+0

偉大的提示!有很多不同之處。例如,LANG在命令行上設置爲en_US.UTF-8。從apache它有這些: _SERVER [「HTTP_ACCEPT_LANGUAGE」] \t en-US,en; q = 0.8 _SERVER [「HTTP_ACCEPT_CHARSET」] \t ISO-8859-1,utf-8; q = 0.7,*; q = 0.3 – Martin 2009-08-18 11:55:59

0

通常會有不同的php.ini文件在通過命令行運行時使用。檢查一下你是否有一個,有什麼區別。