2007年4月30日 星期一

Ajax中文亂碼的解決方案

之前使用AJAX時,因編碼大都使用big5碼,這使得送出或者取回資料都是亂碼,為了
解決此一問題,想了很多的方法試著來解決,但都有缺陷或者完全失敗,這耗掉了不
少的時間,今天總算是瞭解,為何使用非西歐字集的資料使用非UTF8編碼,資料就會
亂掉的原因,在於若無指定編碼格式時JavaScript就會使用預設的UFT8傳送或者接收
資料,經這麼轉碼後,資料當然會亂掉,今天腦筋一轉,試著在送出的HEADER中加入
編碼方式,結果如預期中,當指定了編碼格式後,中文亂碼問題就解決了

方法細節

從伺服器端取回資料,各語言的解決方式
PHP:
header('Content-Type:text/html;charset=big5');

ASP And ASP.NET:
Response.Charse="big5" ;

JSP:
response.setHeader("Charset","big5");

送出資料至伺服器端時
則將送出的資料經過urlencode編碼後送至伺服器就不會產生亂碼。
至於urlencode使用JavaScript實作細節則不方便透露,vBB中有
實作的細節,自行參悟....

結果如下

未指定編碼時取回資料是亂碼



指定編碼後,中文顯示就正常了

【下列文章您可能也有興趣】

沒有留言: