小弟還在實驗可不可行難度多高 :
因為小弟想做一個新的個人網站 覺得非用 big5 版來做才行 所以才會異想天開的想要big5 化
目前並沒有大動土木的計劃想先收集各位學長的意見 望比較早玩 plog 的學長們指導在下 :
小弟的思路及想法上是否可行 ...
1. 小弟打算以 big5 為底層 放入 databases 整個網以 big5 編碼 吐出來 .
2. 修正所有 方土土 及 許功蓋的亂碼問題 .
3. 以 utf-8 的方式吐出 rss 讓 big5 版本的 rss 也可以交換連結 .
經過 研究 可以發現 :
以 magic_quotes_gpc 為 on 的情況 之下 許蓋功問題會有亂碼的情況 ...
以後台 修改文章為例 小弟先提出 許蓋功的問題 .....
big5 化産生 bug 的産生原因 :
vim class/action/admin/adminpostmanagementcommonaction.class.php
可以發現 :
以 這句為例 -
$this->_postText = trim(Textfilter::xhtmlize($this->_request->getValue( "postText" )));
第一個 method -> getValue() : 這個 method 可以在
vim class/net/request.class.php 找到 內容為 :
function getValue( $key, $defaultValue = null )
{
// get the value from the parent
$value = parent::getValue( $key, $defaultValue );
// now if magic quotes are enabled and the input parameter is not an array
// and the feature has not been disabled, then strip the slashes
// fiend
if( get_magic_quotes_gpc() && !is_array( $value ) && $this->_stripSlashes ) {
$value = stripslashes( $value ); // post 字串 第一次 做 stripslashes
}
return( $value );
}
所以它會先判斷 你的 伺服器環境 決定是否要先 消除一次 脱溢字元
而第二次發生在 :
參考 vim ./class/data/textfilter.class.php 的 :
function xhtmlize( $string )
{
// use kses in the "xhtml converter" mode
$config =& Config::getConfig();
if( $config->getValue( "xhtml_converter_enabled" )) {
$kses = new kses( true, $config->getValue( "xhtml_converter_aggresive_mode_enabled"));
$result = $kses->Parse( $string );
// if balanceTags wasn't broken, we could use it...
//$result = Textfilter::balanceTags( $result );
}
else
$result = $string;
return $result;
}
由 它 宣告的 kses 實體可以追到 :
vim class/data/kses.class.php <-- 還好命名很有規則 查起來快多了 .. ^^
function Parse($string = "")
{
// 看到沒 它就是兇手 重覆 判斷 伺服器設定 是否 有自動脱溢 超全域陣列變數 然後再執行 stripslashes 而造成 寫入資料庫前就變成亂碼
if (get_magic_quotes_gpc())
{
$string = stripslashes($string); // 第二次 過濾 脱溢字元
}
$string = $this->_no_null($string);
$string = $this->_js_entities($string);
$string = $this->_normalize_entities($string);
$string = $this->_hook($string);
$string = $this->_split($string);
if( $this->xhtmlConverterOnly ) {
// and also xhtmlize a few more tags...
$string = str_replace( "<br>", "<br />", $string );
$string = str_replace( "<hr>", "<hr />", $string );
}
return $string;
}
所以造成寫入時的big5 字元亂碼 ....
###############################################################################3
目前小弟還在實驗 big5 化會不會有什麼大問題可不可行 還有望各位學長多多指點
先提出個人 測試後的結果 .... 近期會多發表一些有關 big5 化的一些發現