IE瀏覽器與FF瀏覽器關於 Ajax傳遞參數值爲中文時的區別

Ajax傳遞參數爲中文時出現亂碼,我遇到的狀況是: php

1.個人數據庫鏈接 編碼爲 GB2312,latin1_swedish_ci ajax

2.php 文件編碼格式爲 UTF-8,瀏覽器顯示編碼爲 : UTF-8 數據庫

3.個人頁面顯示方式爲兩種: 瀏覽器

一)頁面加載時自動加載,每隔一秒刷新一次 服務器

二)點擊一個分機組名稱時,得到該分機組的相應的成員卡片信息 session

4.對於第一種狀況的處理: 異步

control.php頁面上得到session: 編碼

讀取數據庫的內容: url

line 53:$grouparr[] = iconv("GB2312","UTF-8",$g[0]); //數據庫內容轉換爲 UTF-8,這樣能正常顯示頁面上的中文 spa

line106:$_SESSION['dispatchgroup'] = iconv("UTF-8","GB2312",$grouparr[0]);//將轉換的中文修改成 GB2312,用於在 dispatchinfo.php 文件中得到查詢的條件值,得到GB2312編碼的值。

dispatchinfo.php: line 291

if($_SESSION['dispatchgroup']){
                    $groupaddressinfo = function_listaddressesbygroup($_SESSION['dispatchgroup'],1,$value,0,$_SESSION['dispatchexten'],$_SESSION['dispatchgrouppage']);  

//2013-5-17$groupaddressinfo = "listaddressesbygrouptype|0|LocalExt|1|12|1,,,801,空閒,,|1,,,802,不在線,,|1,,,803,空閒,,|1,,,804,不在線,,|,,,805,不在線,,|,,,806,不在線,,|,,,807,不在線,,|,,,808,不在線,,|,,,809,不在線,,|,,,810,不在線,,|5,餐廳,,811,10.1.6.189;鏈接|6,,,812,user2;斷開|";
                }

此種狀況IE和FF,均能正常顯示。

5.對於第二種狀況:

點擊「分機組」名稱,得到點擊的分機組的中文名稱,經過Ajax 傳遞到 dispatchinfo2.php 文件中進行處理,修改前,js點擊事件後得到的中文名稱,alert均爲正常值【格式爲UTF-8】,此時數據庫中的內容爲GB2312,這時,在通過 iconv轉碼就會出現錯誤。

由於只對於第一種狀況,我在處理時採用轉換編碼的方式

$groupname = iconv("GB2312","UTF-8",$groupname); 

此時再次編碼就會出現錯誤了,

解決方法:

JS 的異步提交處理:

checkval()  

var ajax = InitAjax();
        var url = "dispatchinfo2.php?"+arges;
        //2013-08-21 limx 中文編碼問題
        url = encodeURI(encodeURI(url));
        ajax.open('GET',url,true);

dispatchinfo2.php

$groupname = urldecode($groupname);

$groupname = iconv("utf-8","GB2312",$groupname);


四行代碼完美解決中文編碼的問題。

由於AJAX發送數據都是採用UTF-8編碼的方式發送的,因此要在服務器 端進行編碼轉換(我這裏頁面是採用GB2312編碼的,若是是採用UTF-8的話應該不會有這步的問題),因此我在服務器端進行了UTF-8轉 GB2312

相關文章
相關標籤/搜索