一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Mysql - Mysql以utf8存儲gbk輸出的實現方法提供

Mysql以utf8存儲gbk輸出的實現方法提供

2019-10-18 16:35mysql技術網 Mysql

一個站有可能經歷gb2312(gbk,big5)到utf8的轉換過程,其中會遇到很多的問題。站點太龐大了怎么辦呢,只能一步步來了。要是能在極少改動前端代碼的情況下,先完成數據的轉換將會使整件事情容易得多。經過幾天測試終于發現,M

一個站有可能經歷gb2312(gbk,big5)到utf8的轉換過程,其中會遇到很多的問題。站點太龐大了怎么辦呢,只能一步步來了。要是能在極少改動前端代碼的情況下,先完成數據的轉換將會使整件事情容易得多。經過幾天測試終于發現,Mysql以utf8存儲gbk輸出是可以實現的。mysql4.1后都有個特性,可以指定當前客戶端連接所使用的字符集,mysql默認都是latin1,或由mysql server端配置的字符集進行連接校對。我使用utf8_general_ci來創建字段。  
DB: 
SQL代碼: 

復制代碼代碼如下:


Create TABLE `table` (   
`id` INT( 10 ) NOT NULL ,   
`name` VARCHAR( 50 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,   
INDEX ( `g_id` )    
) ENGINE = innodb CHARACTER SET utf8 COLLATE utf8_general_ci;  



PHP: 
存儲操作指定使用utf8字符集進行連接校對,讀取操作指定使用gbk字符集進行連接校對。 


PHP代碼: 

復制代碼代碼如下:


<?php   
        //    Select    DB    And    Set    Link    Use    UTF8   
        function    _select_db_utf()   
        {   
        mysql_select_db($this->db_name,    $this->db_link);   


        //    init    character   
        mysql_query("SET    NAMES    utf8",    $this->db_link);   
        mysql_query("SET    CHARACTER    SET    utf8",    $this->db_link);   
        mysql_query("SET    COLLATION_CONNECTION='utf8_general_ci'",    $this->db_link);   


        return    true;   
        }   


        //    Select    DB    And    Set    Link    Use    GBK   
        function    _select_db_gb()   
        {   
        mysql_select_db($this->db_name,    $this->db_link);   


        //    init    character   
        mysql_query("SET    NAMES    gbk",    $this->db_link);   
        mysql_query("SET    CHARACTER    SET    gbk",    $this->db_link);   
        mysql_query("SET    COLLATION_CONNECTION='gbk_chinese_ci'",    $this->db_link);   


        return    true;   
        }   
?>  

需要注意幾點: 
1. mysql必須把gbk,gb2312,utf8等字符集編譯進去。 
2. 入庫的數據內容必須保證是最正確的UTF8編碼。 
3. 存儲和讀取操作要指定正確的字符集進行連接校對。 

要是前端代碼操作數據入庫不能以UTF8進行,則需要對字符進行轉碼了。(例如用AJAX提交的數據便是正確的UTF8,這時是不用轉換的。) 

因為mb_string是PHP所支持字符最全的,而iconv比它稍差一點,mb_string并不能完全支持一些特殊字符的轉碼,所以目前為止都沒有完美的轉碼方法。 

再次對mb_string和iconv進行比較: 

mb_string: 
1. 所支持字符最全 
2. 內容自動識別編碼,不需要確定原來字符的編碼,但是執行效率比iconv差太多 
3. $content = mb_convert_encoding($content, "UTF-8", "GBK,GB2312,BIG5");(順序不同效果也有差異) 

iconv: 
1. 所支持字符不全 
2. 需要確定原來字符的編碼,但在確定編碼的情況下執行效率比mb_convert_encoding高 
3. $content = iconv("GBK", "UTF-8", $content);

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 青青草成人在线 | 51国产午夜精品免费视频 | 波多野结衣在线观看视频 | 粉嫩国产14xxxxx0000 | 粉嫩国产14xxxxx0000 | 成人欧美一区二区三区黑人 | 日产中文乱码卡一卡二 | 明星乱亚洲 | 大伊香蕉精品视频一区 | 欧美一区二区三区免费高 | 办公室操秘书 | 日本乱中文字幕系列在线观看 | 99在线观看国产 | 韩国免费特一级毛片 | 69日本xxxx| 美女被草哭| 狠狠色婷婷 | 日韩欧免费一区二区三区 | 法国女佣系列在线播放 | 4虎影院永久地址www | 亚洲天堂99| 色橹橹 | 微福利92合集 | 欧美一级xxxx俄罗斯一级 | 手机在线免费观看日本推理片 | 午夜日本大胆裸艺术 | 国产馆在线观看免费的 | 我与肥熟老妇的性事 | 性欧美黑人巨大喷潮xxoo | 娇妻被健身教练挺进小说阅读 | 性夜夜春夜夜爽AA片A | 午夜福利理论片在线播放 | 湿好紧太硬了我太爽了 | 精品丰满人妻无套内射 | 免费的毛片视频 | 韩国理论三级在线观看视频 | 日韩精品中文字幕久久 | 免费永久观看美女视频网站网址 | 好大好硬好深好爽gif图 | 国产a一级 | 2021小妲己永久回家地址 |