2011-07-02 54 views
1

我的項目是基於CodeIgniter,但我想這個問題根本不是關於它。

首先,我啓用了查詢字符串和搜索功能。搜索字符串傳遞到「搜索關鍵詞」變量,當我將其穿過的形式,它工作得很好,看起來像:

的http://本地的/ home /搜索/搜索關鍵詞= testtesttest

好了,現在當我在搜索表單中輸入一些西里爾字符串時,它也可以正常工作,例如:URI:

http:// local/home/search /?searchterm =привет(in chrome)或 http: // local/home/search /?searchterm = (在IE,Opera等)

以上兩種情況都可以正常工作,但是當我輸入CY RILLIC直接從地址欄搜索字符串(例如,在Opera或IE中),它不想搜索任何內容。 $ _GET ['searchterm']是空的,對於QUERY_STRING,它就像searchterm = (來自探查器的所有數據)。

我urldecode從控制器我的字符串,但它以某種方式不起作用。我也嘗試了一些iconv()的情況,從我的搜索引擎優化,但他們也沒有工作。

所以問題是爲什麼除chrome之外的所有其他瀏覽器都不從地址欄中檢索CYRILLIC $ _GET變量(如果從那裏輸入的話)?通過表單一切工作正常。

在此先感謝,夥計們。希望你的幫助。

P.S. 我還發現:

%D0%BD%D0%BE%D1%87%D0%B0%D0%BB%D0%BE

  • 這是從表單傳遞,ACCEPT- charset被設置爲UTF-8。在那種情況下,正如我所說的,一切正常。和:

%ED%E0%F7%E0%EB%EE

  • 這直接在地址欄鍵入裏面的字符串時,談到在地址欄中。所以我猜每個瀏覽器都會將我的西里爾文符號變成奇怪的東西...我不知道:(

不要忘了,用Chrome瀏覽器一切正常!也許這是因爲默認情況下,這個瀏覽器不編碼西里爾文符號像其他瀏覽器一樣錯誤的方式

+0

有人嗎?請幫忙! – vadimyer

+0

爲什麼不讓你的生活變得十倍容易,只需使用post而不是get? – Peter

回答

0

我猜這裏的問題的一部分是你在URL中使用UTF-8字符...你可以設置PHP默認使用UTF-8從內部php.ini文件或在應用程序某處添加ini_set('default_charset', 'UTF-8');,(如果我無法修改.ini文件,則將其添加到CodeIgniter中的根index.php文件中)。

I tes在Firefox和Safari中快速瀏覽了日文和您的示例,並且他們都顯示了正確的字符串。有關設置用於UTF-8的Apache/PHP的更多信息,請參閱this excellent guide