PHP字符編碼問題-總結

今天在網上看到一我的的對於php開發中字符編碼的總結,感受不錯,摘錄以下:php

一,php編碼轉換
        1.經過iconv()函數實現編碼轉換
                語法:iconv(string in_charset,string out_charset,string str)
 將指定字符串str由in_charset編碼格式轉換成out_charset編碼格式,返回bool值。
        2.經過mb_convert_encoding()函數實現編碼轉換
                語法:mb_convert_encoding(string str,string to_encoding[,mixed from_encoding])
                將字符串str的編碼由from_encoding轉換爲to_encoding。
二,檢測php字符串的編碼
        經過mb_detect_encoding()函數來檢測字符串使用的是何種字符編碼。
三,字符編碼優先級
        由高--->低
        1.http消息報頭的Content-Type字段中的charset參數。
        2.經過meta元素聲明,將http-equiv設置成Content-Type。
        3.一些元素的charset屬性設置。
四,解決頁面中的php亂碼問題
        數據庫中數據的輸入和輸出產生的亂碼,能夠經過PHP的mysql_query()函數設置來解決,而頁面中若是出現亂碼,則能夠使用下面的兩種方法解決。
        (1)使用meta標籤設置頁面編碼
        
        meta標籤的做用是聲明客戶端的瀏覽器用什麼字符編碼顯示該頁面。
        (2)經過header()函數設置頁面的編碼格式
        header("content-type;text/html;charset=gb2312");

        header()函數的做用是把括號內的信息發到HTTP標頭。html

5、若是瀏覽器不能選擇你在頁面中默認的字符編碼來顯示頁面mysql

能夠設置php中的php.ini文件中的default_charset = "編碼", 例如:default_charset = "gb2312"sql

這裏決定了瀏覽器選擇的默認編碼。數據庫

 1     /**  
 2      * 對數據進行編碼轉換  
 3      * @param array/string $data       數組  
 4      * @param string $output    轉換後的編碼  
 5      */  
 6     function array_iconv($data,  $output = 'utf-8') {  
 7         $encode_arr = array('UTF-8','ASCII','GBK','GB2312','BIG5','JIS','eucjp-win','sjis-win','EUC-JP');  
 8         $encoded = mb_detect_encoding($data, $encode_arr);  
 9       
10         if (!is_array($data)) {  
11             return mb_convert_encoding($data, $output, $encoded);  
12         }  
13         else {  
14             foreach ($data as $key=>$val) {  
15                 $key = array_iconv($key, $output);  
16                 if(is_array($val)) {  
17                     $data[$key] = array_iconv($val, $output);  
18                 } else {  
19                 $data[$key] = mb_convert_encoding($data, $output, $encoded);  
20                 }  
21             }  
22         return $data;  
23         }  
24     }  
相關文章
相關標籤/搜索