2009年1月23日 星期五

解決IE6/Google Chrome使用J! 1.5無法搜尋中文問題

在IE6(Internet Explorer 6)中,當使用搜尋功能時(例如搜尋「中文字」,網址會變成如下,UTF-8的「中文字」轉成「銝剜?摮」,然後無法進行搜尋的功能。

在Firefox 3.0.5中是可以正常進行搜尋功能,Firefox會自動轉碼:
http://www.joomla.org.tw/component/search/%E4%B8%AD%E6%96%87%E5%AD%97/?ordering=newest&searchphrase=all

在IE7中是可以正常進行搜尋功能,IE7不會自動轉碼,但還是正常:
http://www.joomla.org.tw/component/search/中文字/?ordering=&searchphrase=all

Google Chrome的搜尋也會出錯

http://www.joomla.org.tw/component/search/%E4%B8%AD%E6?%E5%AD??ordering=newest&searchphrase=all

解決之法:

修改/libraries/joomla/environment/uri.php的第347行左右的toString函式


$uri .= in_array('query', $parts) ? (!empty ($query) ? '?'.$query : '') : '';

之前加入

$query=str_replace("%2F", "/", urlencode($query));
$query=str_replace("%3D", "=", $query);
$query=str_replace("%26", "&", $query);


目的是讓$query的字串如果出現中文時,會先作urlencode,這樣在IE6或Google Chrome中的中文搜尋都可以正常運作了。

沒有留言: