xajax 是優秀 PHP AJAX 框架/庫,能黏合 HTML、CSS、JavaScript、PHP,可結合 Smarty 模板。使用 Xoops Page 模組發現無法與中文正常工作,特別是 UTF-8 編碼頁面,實作 DataGrid 時報 the XML response that was returned from the server is invalid 錯誤。
common.php、server.php 及其引用 PHP 檔 (特別是生成資料檔) 全部用 ASCII 格式儲存,勿用 UTF-8server.php 輸出資料內容最好用 GB2312 編碼common.php 開頭定義:define('XAJAX_DEFAULT_CHAR_ENCODING','GB2312');$xajax = new xajax(); $xajax->decodeUTF8InputOn(); 或 $xajax = new xajax('gb2312'); $xajax->setCharEncoding(); $xajax->decodeUTF8InputOn(); $objResponse = new xajaxResponse('gb2312');網上說用 UTF-8 即可,實測即使全 UTF-8 仍報錯。聯想 IE 下 UTF-8 BOM Bug,抓包發現伺服器回應含多個 UTF-8 BOM (EF BB BF),可能是 Microsoft XML Parser BOM Bug。解決:所有頁面 (含 xajax 庫檔、common.php、server.php、供訪問頁面) 全部用 UTF-8 無 BOM 儲存 (UltraEdit: F12 或另存為選 UTF-8無BOM)。
urldecode 處理以便資料庫操作--enable-zend-multibyte 可能解決此類問題,預期 PHP 6 完美支援 Unicode