亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

解決php ajax傳值亂碼問題的方法

發布時間:2020-09-04 10:47:47 來源:億速云 閱讀:103 作者:小新 欄目:編程語言

這篇文章將為大家詳細講解有關解決php ajax傳值亂碼問題的方法,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

php ajax傳值亂碼的解決辦法:1、將前后臺頁面以及數據庫統一采用UTF8編碼;2、在存入數據庫時使用“mysql_query("set names gb2312");”方法;3、使用ICONV函數對從數據庫中取出的字符串進行編碼轉換。

解決php ajax傳值亂碼問題的方法

在php網站開發中,為了增加用戶體驗度,Ajax是一種經常使用的技術,但是對于初學者來說,時常會碰到Ajax傳值中文字符串時變成亂碼的問題,有什么辦法可以解決PHP AJAX傳值中文字符亂碼的問題呢?

  我們知道Ajax技術由JavaScript演變而來,而javascript使用UTF-8編碼,當前后臺頁面采用GBK或者其他編碼,同時沒有進行編碼轉換時,就會出現中文字符亂碼問題。

PHP Ajax傳值中文字符亂碼解決方法

  方法一、前后臺頁面以及數據庫統一采用UTF8編碼,這是最簡單的方法。

  方法二、當網站已采用了諸如GBK/GB2312編碼時,分兩種情況:

  1、Ajax發送中文字符、PHP(后臺程序)進行接收發生亂碼時,使用GBK與UTF8的轉換函數對接受的字符串進行編碼轉換,再存入相關數據庫,這里假設數據庫采用的編碼是GBK或者GB2312,如果配置的PHP運行環境支持ICONV函數,你也可使用ICONV函數進行編碼轉換,然后在存入數據庫時

mysql_query("set names gb2312");

即可解決Ajax傳值中文亂碼問題。

  2、PHP發送中文字符、Ajax(前臺頁面)進行接收發生亂碼時,同樣可以使用ICONV函數對從數據庫中取出的字符串進行編碼轉換,再傳值至Ajax前臺,即responseText。或者在PHP(后臺程序)輸出字符流之前加上

header('Content-type: text/html;charset=gb2312');

即可。特別指出:在使用Ajax做多級聯動(比如省份城市聯動)時,采用xml交互形式,在輸出XML之前也必須加上header。

  同時貼出GB2312與UTF8的轉換函數,方便大家在遇到Ajax中文亂碼問題時多一種解決方法。

function gb2utf8($gb,$filename)
{
    if(!trim($gb))
    return $gb;
    //$filename="gb2312.txt";
    $tmp=file($filename);
    $codetable=array();
    while(list($key,$value)=each($tmp))
    $codetable[hexdec(substr($value,0,6))]=substr($value,7,6);
    $utf8="";
    while($gb)
    {
        if (ord(substr($gb,0,1))>127)
        {
            $thisgb=substr($gb,0,2);
            $gb=substr($gb,2,strlen($gb));
            $utf8.=u2utf8(hexdec($codetable[hexdec(bin2hex($thisgb))-0x8080]));
        }
        else
        {
            $gb=substr($gb,1,strlen($gb));
            $utf8.=u2utf8(substr($gb,0,1));
        }
    }
    $ret="";
    for($i=0;$i<strlen($utf8);$i+=3)
    $ret.=chr(substr($utf8,$i,3));
    return $ret;
}
function u2utf8($c)
{
    for($i=0;$i<count($c);$i++)
    $str="";
    if ($c < 0x80) {
        $str.=$c;
    }
    else if ($c < 0x800) {
        $str.=(0xC0 $c>>6);
        $str.=(0x80 $c & 0x3F);
    }
    else if ($c < 0x10000) {
        $str.=(0xE0 $c>>12);
        $str.=(0x80 $c>>6 & 0x3F);
        $str.=(0x80 $c & 0x3F);
    }
    else if ($c < 0x200000) {
        $str.=(0xF0 $c>>18);
        $str.=(0x80 $c>>12 & 0x3F);
        $str.=(0x80 $c>>6 & 0x3F);
        $str.=(0x80 $c & 0x3F);
    }
    return $str;
}

注:此函數需要使用GB2312中文編碼表,請點擊這里下載,由于是采用gb2312,對于一些比較生僻的詞在轉換時可能會出現亂碼。

關于解決php ajax傳值亂碼問題的方法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

海门市| 沙雅县| 桦甸市| 赣榆县| 雷波县| 锦屏县| 灵川县| 自贡市| 新野县| 安福县| 南靖县| 清苑县| 海兴县| 富顺县| 靖江市| 临城县| 蒙山县| 高唐县| 安塞县| 泗阳县| 海口市| 南华县| 虹口区| 连城县| 罗定市| 个旧市| 泸定县| 温宿县| 临城县| 科尔| 江城| 清苑县| 阿拉善左旗| 辽中县| 泽州县| 于田县| 曲松县| 毕节市| 安义县| 黔东| 万盛区|