最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

php讀取mysql亂碼,用set names XXX解決的原理分享

 更新時間:2011年12月29日 23:41:19   作者:  
解決亂碼的方法,我們經(jīng)常使用“set names utf8”,那么為什么加上這句代碼就可以解決了呢?下面跟著我一起來深入set names utf8的內(nèi)部執(zhí)行原理
先說MySQL的字符集問題。Windows下可通過修改my.ini內(nèi)的

PHP代碼
復(fù)制代碼 代碼如下:

[mysql]

default-character-set=utf8 //客戶端的默認(rèn)字符集
[mysqld]

default-character-set=utf8 //服務(wù)器端默認(rèn)的字符集

假設(shè)我們把兩個都設(shè)為utf8,然后在MySQL Command Line Client里面輸入“show variebles like“character_set_%”;”,可看到如下字符:
復(fù)制代碼 代碼如下:

character_set_client latin1
character_set_connection latin1
character_set_database utf8
character_set_results latin1
character_set_server utf8
character_set_system utf8

要是我們通過采用UTF-8的PHP程序從數(shù)據(jù)庫里讀取數(shù)據(jù),很有可能是一串“?????”或者是其他亂碼。

解決辦法是,在連接數(shù)據(jù)庫之后,讀取數(shù)據(jù)之前,先執(zhí)行一項查詢“SET NAMES UTF8”,即在PHP里為

mysql_query("SET NAMES UTF8");

//該句話一定要放在數(shù)據(jù)庫服務(wù)器連接語句【$connection=mysql_connect($db_host,$db_user,$db_psw)or die("連接服務(wù)器失敗");】之后

即可顯示正常(只要數(shù)據(jù)庫里信息的字符正常)。

到MySQL命令行輸入“SET NAMES UTF8;”,然后執(zhí)行“show variebles like“character_set_%”;”,發(fā)現(xiàn)原來為latin1的那些變量“character_set_client”、“character_set_connection”、“character_set_results”的值全部變?yōu)閡tf8了,原來是這3個變量在搗蛋。

查閱手冊,上面那句等于:

SET character_set_client = utf8;

SET character_set_results = utf8;

SET character_set_connection = utf8;

看看這3個變量的作用:
信息輸入路徑:client→connection→server;
信息輸出路徑:server→connection→results。
換句話說,每個路徑要經(jīng)過3次改變字符集編碼。以出現(xiàn)亂碼的輸出為例,server里utf8的數(shù)據(jù),傳入connection轉(zhuǎn)為latin1,傳入results轉(zhuǎn)為latin1,utf-8頁面又把results轉(zhuǎn)過來。如果兩種字符集不兼容,比如latin1和utf8,轉(zhuǎn)化過程就為不可逆的,破壞性的。

但這里要聲明一點,“SET NAMES UTF8”作用只是臨時的,MySQL重啟后就恢復(fù)默認(rèn)了。

接下來就說到MySQL在服務(wù)器上的配置問題了。豈不是我們每次對數(shù)據(jù)庫讀寫都得加上“SET NAMESUTF8”,以保證數(shù)據(jù)傳輸?shù)木幋a一致?能不能通過配置MySQL來達(dá)到那三個變量默認(rèn)就為我們要想的字符集?手冊上沒說,我在網(wǎng)上也沒找到答案。所以,從服務(wù)器配置的角度而言,是沒辦法省略掉那行代碼的。
總結(jié):為了讓你的網(wǎng)頁能在更多的服務(wù)器上正常地顯示,還是加上“SET NAMES UTF8”吧,即使你現(xiàn)在沒有加上這句也能正常訪問。

相關(guān)文章

  • 如何在PHP中讀寫文件

    如何在PHP中讀寫文件

    這篇文章主要介紹了如何在PHP中讀寫文件,幫助大家更好的理解和學(xué)習(xí)php,感興趣的朋友可以了解下
    2020-09-09
  • PHP 文件上傳全攻略

    PHP 文件上傳全攻略

    PHP文件上傳功能一般都是大家使用事先封裝好的函數(shù),要用的時候直接使用已封裝的函數(shù)就完了,但有時候不能使用封裝函數(shù),還真不大能記住PHP的上傳相關(guān)的東西,在此做個總結(jié),以備后用。
    2010-04-04
  • PHP Parser 掃描應(yīng)用打印輸出結(jié)構(gòu)語句實例

    PHP Parser 掃描應(yīng)用打印輸出結(jié)構(gòu)語句實例

    這篇文章主要為大家介紹了PHP Parser 掃描應(yīng)用打印輸出結(jié)構(gòu)語句實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • PHP操作MySQL的常用代碼段梳理與總結(jié)

    PHP操作MySQL的常用代碼段梳理與總結(jié)

    MySQL時我們常會使用的數(shù)據(jù)庫語言,關(guān)于PHP操作MySQL的常用代碼段小編匯總整理了一遍,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以收藏下
    2021-09-09
  • php注冊登錄系統(tǒng)簡化版

    php注冊登錄系統(tǒng)簡化版

    這篇文章主要為大家詳細(xì)介紹了php注冊登錄系統(tǒng)簡化版的實現(xiàn)步驟,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-03-03
  • PHP數(shù)組函數(shù)array_multisort()用法實例分析

    PHP數(shù)組函數(shù)array_multisort()用法實例分析

    這篇文章主要介紹了PHP數(shù)組函數(shù)array_multisort()用法,結(jié)合實例形式詳細(xì)分析了array_multisort函數(shù)的功能,定義及進(jìn)行數(shù)組排序過程中的使用技巧,需要的朋友可以參考下
    2016-04-04
  • php動態(tài)綁定變量的用法

    php動態(tài)綁定變量的用法

    這篇文章主要介紹了php動態(tài)綁定變量的用法,涉及php變量的判定與動態(tài)定義的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • 在ThinkPHP6中使用mysql進(jìn)行分頁查詢的實現(xiàn)代碼

    在ThinkPHP6中使用mysql進(jìn)行分頁查詢的實現(xiàn)代碼

    隨著互聯(lián)網(wǎng)的快速發(fā)展,web應(yīng)用程序的開發(fā)也越來越復(fù)雜,而分頁查詢是web應(yīng)用程序中常見的功能之一,thinkphp6是一個web框架,可以幫助開發(fā)人員快速開發(fā)應(yīng)用程序,在本文中,我們將討論如何在thinkphp6中使用mysql進(jìn)行分頁查詢,需要的朋友可以參考下
    2024-07-07
  • phpmyadmin里面導(dǎo)入sql語句格式的大量數(shù)據(jù)的方法

    phpmyadmin里面導(dǎo)入sql語句格式的大量數(shù)據(jù)的方法

    phpmyadmin里面導(dǎo)入sql語句格式的大量數(shù)據(jù)的方法
    2010-06-06
  • 利用PHP+JS實現(xiàn)搜索自動提示(實例)

    利用PHP+JS實現(xiàn)搜索自動提示(實例)

    本篇文章對利用PHP+JS實現(xiàn)搜索自動提示的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06

最新評論

洛宁县| 柘城县| 郎溪县| 正镶白旗| 中山市| 云浮市| 聊城市| 平邑县| 城口县| 达日县| 吉首市| 依安县| 扎兰屯市| 北京市| 昌都县| 孟州市| 平定县| 奎屯市| 阜宁县| 库尔勒市| 丹寨县| 米易县| 安平县| 什邡市| 景宁| 若尔盖县| 惠州市| 新绛县| 紫云| 含山县| 兰州市| 沾化县| 茂名市| 双江| 巫山县| 花莲市| 上饶县| 江口县| 巴里| 碌曲县| 武乡县|