首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP xajax 庫中文問題與 XML 回應無效解決方案

     編輯:PHP 綜合知識

問題背景

xajax 是優秀 PHP AJAX 框架/庫,能黏合 HTML、CSS、JavaScript、PHP,可結合 Smarty 模板。使用 Xoops Page 模組發現無法與中文正常工作,特別是 UTF-8 編碼頁面,實作 DataGrid 時報 the XML response that was returned from the server is invalid 錯誤。

GB2312/GBK 編碼解決方案

  • common.php、server.php 及其引用 PHP 檔 (特別是生成資料檔) 全部用 ASCII 格式儲存,勿用 UTF-8
  • server.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 即可,實測即使全 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)。

補充說明

  • 回傳參數 (特別中文) 有時被 URL 編碼,需用 urldecode 處理以便資料庫操作
  • xajax 0.25 下載:SourceForge
  • 中文手冊:HonestQiao/FlyingHail 版
  • PHP --enable-zend-multibyte 可能解決此類問題,預期 PHP 6 完美支援 Unicode
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved