LifeType 中文開發論壇

支援 => 安裝與設定 => 主題作者是: breezeccn 於 九月 04, 2007, 08:46:38 下午



主題: 我安裝了1.2.4,網誌名稱取中文就會變成????
作者: breezeccn九月 04, 2007, 08:46:38 下午
不知道是不是語系的問題…
還是資料庫的問題…
重新命名後還是一樣…
不知道有沒有那位前輩知道可能的原因…
我第一次使用…請大家多指教


主題: Re: 我安裝了1.2.4,網誌名稱取中文就會變成????
作者: breezeccn九月 04, 2007, 09:53:15 下午
情形請連結進來看一下
http://163.27.216.2/plog/index.php?blogId=1


主題: Re: 我安裝了1.2.4,網誌名稱取中文就會變成????
作者: bibicall九月 05, 2007, 02:47:43 上午
不知道是不是語系的問題…
還是資料庫的問題…
重新命名後還是一樣…
不知道有沒有那位前輩知道可能的原因…
我第一次使用…請大家多指教

是資料庫的問題
請確定新增資料庫時,連線校對是utf8 general ci


主題: Re: 我安裝了1.2.4,網誌名稱取中文就會變成????
作者: breezeccn九月 05, 2007, 08:06:45 下午
感謝大大的回覆…
安裝時…資料庫連結的確不是utf8 general ci
我是手動選擇的…
我想是這個步驟產生問題的…
請問我該怎麼做…
直接進入phpmyadmin改嗎?
還是…
ps.我的主機是freebsd6、php5


主題: Re: 我安裝了1.2.4,網誌名稱取中文就會變成????
作者: hlps9999九月 06, 2007, 01:11:41 上午
文章亂碼的部分,反正是剛安裝,刪除舊的資料庫,用phpmyadmin手動建立新的資料庫,編碼設定為utf8,再重新wizard.php吧!

至於註冊時網誌名稱用中文會出現亂碼,剛剛有找到個解決方式
參考「register problem (http://forums.lifetype.net/viewtopic.php?t=6921)」 這篇文章

        修改 class/data/textfilter.class.php

        第 119行
        return htmlentities( $string );  改成

        return htmlspecialchars( $string );

不過不確定這樣日後是否會有其他影響,至少註冊時用中文網誌名稱就不會出現亂碼了。


主題: Re: 我安裝了1.2.4,網誌名稱取中文就會變成????
作者: breezeccn九月 11, 2007, 02:03:30 下午
對不起…這幾天比較沒空…所以現在才回覆…
問題的確解決…果然是資料庫的問題…
謝謝啦


主題: Re: 我安裝了1.2.4,網誌名稱取中文就會變成????
作者: hlps9999九月 12, 2007, 10:48:08 下午
近日也才發現有這問題,不過應該不是修改這檔案的關係
我在未修改過這檔案的1.2.4版及1.2.1版均發現有此問題

網誌名稱用某些字就會出現這問題
例如網誌名稱為「活力家族」就會出錯,
但若改成「站台名稱活力家族」,就又沒問題


主題: Re: 我安裝了1.2.4,網誌名稱取中文就會變成????
作者: shime九月 13, 2007, 03:07:55 下午
小弟的方法是去修改了 BlogNameValidator 這個類別
將其validate方法中的
引用
return(( Textfilter::domainize( Textfilter::filterAllHTML( $value ))) != "" );
修改為
引用
return(( Textfilter::filterAllHTML( $value )) != "" );
也就是不作domainize的字串過濾動作
因為在domainize方法(也就是urlize($string, true)這個方法)中的註解提到
引用
         * Given a string, convert it into something that can be used in a URL (it probably doesn't work very
         * well with non iso-8859-X strings) It will remove the following characters:
         *
         * ; / ? : @ & = + $ ,
         *
         * It will convert accented characters such as �, �, �, etc to their non-accented counterparts (a, e, i) And
         * any other non-alphanumeric character that hasn't been removed or replaced will be thrown away.
         *
說明了此方法為了是要讓部落格名稱可以放在URL中使用,且使用此方法將對非iso-8859-X語系的字串產生影響
因此,考慮了自己的現況(1.以後如果要用簡短網址應該不可能讓中文的部落格名稱放在URL上面、2.使用utf-8中文語系,也就是非iso-8859-X語系 :-(啦)
所以就做了上述的修改

另外,在註冊時發生部落格名稱會產生亂碼的現象,小弟發現在註冊時,部落格的名稱會經過兩次文字過濾,第一個為HtmlFilter方法過濾、第二個為BlogNameValidator過濾,其中第二個過濾所產生的問題剛剛已經解決了,現在要來解決第一個問題。

在解決第一個問題之前,小弟發現在管理介面中,由管理者新增部落格、修改部落格時,在對部落格名稱文字過濾時,僅做了filterAllHTML方法過濾與BlogNameValidator方法過濾,因此,小弟就投機取巧的依樣畫葫蘆將這個問題改用filterAllHTML方法來作文字過濾,如此,就沒有新註冊時會產生部落格名稱的亂碼問題了。(不過,都說了是投機取巧,不曉得原本使用HtmlFilter方法的用意為何,小弟也沒有認真的去理解HtmlFilter方法用意為何了  :-P)

新註冊產生亂碼的解決方法為下:
將doBlogRegistration類別,27行,作註解
引用
$this->_request->registerFilter( "blogName", new HtmlFilter( true ));
再來同樣將這個類別的,88行
原始為
引用
SessionManager::setSessionValue( "blogName", $this->_request->getValue( "blogName" ));
修改為
引用
SessionManager::setSessionValue( "blogName", Textfilter::filterAllHTML($this->_request->getValue( "blogName" )));
這樣就可以啦(前提你的BlogNameValidator類別需要先作修改才行)


以上是小弟的解決方法,不知是否會產生安全上的問題,還請各位多指教
ps.我的為1.2.3版本