PHP如何解決查詢MySQL數據庫中文亂碼?

PHP如何解決查詢MySQL數據庫中文亂碼?

臨川網站建設公司創新互聯,臨川網站設計制作,有大型網站制作公司豐富經驗。已為臨川上千多家提供企業網站建設服務。企業網站搭建\外貿營銷網站建設要多少錢,請找那個售后服務好的臨川做網站的公司定做!

1、將MySQL數據庫默認的編碼是UTF-8;

2、在MySQL中創建表時,將字符集設置為UTF-8;

3、在PHP中查詢數據之前,將數據庫編碼設置為UTF-8即可。

MySQL的“SET NAMES x”字符集問題分析

近來接受BBT的培訓,做一個投票系統。系統代碼倒不是很難,但是我的時間主要花費在了研究字符集和編碼上面。MySQL和Apache兩個系統的編碼(字符集)問題讓我費勁腦筋,吃盡苦頭。網上對這些問題的解決比較零散,比較片面,大部分是提供解決方法,卻不說為什么。于是我將這幾天收獲總結一下,避免后來者再走彎路。這篇文章對PHP編寫有一點幫助(看完你就知道,怎樣讓你的PHP程序在大部分空間提供商的服務器里顯示正常),但是更多幫助在于網絡服務器的架設和設置。

先說MySQL的字符集問題。Windows下可通過修改my.ini內的

# CLIENT SECTION
[mysql]
default-character-set=utf8
# SERVER SECTION
[mysqld]
default-character-set=utf8

這兩個字段來更改數據庫的默認字符集。第一個是客戶端默認的字符集,第二個是服務器端默認的字符集。假設我們把兩個都設為utf8,然后在MySQL Command Line Client里面輸入“show variebles like “character_set_%”;”,可看到如下字符:

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

其中的utf8隨著我們上面的設置而改動。此時,要是我們通過采用UTF-8的PHP程序從數據庫里讀取數據,很有可能是一串“?????” 或者是其他亂碼。網上查了半天,解決辦法倒是簡單,在連接數據庫之后,讀取數據之前,先執行一項查詢“SET NAMES UTF8”,即在PHP里為

mysql_query("SET NAMES UTF8");

即可顯示正常(只要數據庫里信息的字符正常)。為什么會這樣?這句查詢“SET NAMES UTF8”到底是什么作用?

到MySQL命令行輸入“SET NAMES UTF8;”,然后執行“show variebles like “character_set_%”;”,發現原來為latin1的那些變量“character_set_client”、“character_set_connection”、“character_set_results”的值全部變為utf8了,原來是這3個變量在搗蛋。查閱手冊,上面那句等于:

SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;

看看這3個變量的作用:

信息輸入路徑:client→connection→server;

信息輸出路徑:server→connection→results。

換句話說,每個路徑要經過3次改變字符集編碼。以出現亂碼的輸出為例,server里utf8的數據,傳入connection轉為latin1,傳入results轉為latin1,utf-8頁面又把results轉過來。如果兩種字符集不兼容,比如latin1和utf8,轉化過程就為不可逆的,破壞性的。所以就轉不回來了。

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

接下來就說到MySQL在服務器上的配置問題了。豈不是我們每次對數據庫讀寫都得加上“SET NAMES UTF8”,以保證數據傳輸的編碼一致?能不能通過配置MySQL來達到那三個變量默認就為我們要想的字符集?手冊上沒說,我在網上也沒找到答案。所以,從服務器配置的角度而言,是沒辦法省略掉那行代碼的。

推薦教程:《PHP》《MySQL教程》

新聞標題:PHP如何解決查詢MySQL數據庫中文亂碼?
網站URL:http://m.kartarina.com/article46/cpcehg.html

成都網站建設公司_創新互聯,為您提供網站維護網站設計標簽優化網站制作軟件開發搜索引擎優化

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

外貿網站制作
主站蜘蛛池模板: 无码精品蜜桃一区二区三区WW| 精品久久久无码中字| 久久精品?ⅴ无码中文字幕| 无码免费午夜福利片在线| 国产aⅴ激情无码久久久无码| 亚洲精品无码乱码成人| 亚洲av永久中文无码精品| 精品无码中出一区二区| 久久久无码中文字幕久...| 亚洲爆乳AAA无码专区| 中文有码vs无码人妻| 亚洲成a∨人片在无码2023| 中文字幕人妻无码一区二区三区| 99精品一区二区三区无码吞精 | 精品无码国产污污污免费| 潮喷大喷水系列无码久久精品| 免费A级毛片无码A∨免费| 免费看成人AA片无码视频吃奶| 亚洲欧洲无码AV不卡在线| 无码无遮挡又大又爽又黄的视频| 爽到高潮无码视频在线观看| 亚洲熟妇无码八V在线播放| 无码av免费网站| 曰韩精品无码一区二区三区| 无码人妻少妇久久中文字幕| 无码人妻精品一二三区免费| 亚洲va成无码人在线观看| 国精品无码一区二区三区在线| 亚洲AV永久无码精品一区二区国产| 精品国产V无码大片在线看| 色窝窝无码一区二区三区| 亚洲国产精品无码久久久蜜芽| 国产强伦姧在线观看无码| 人妻丰满?V无码久久不卡| 黄色成人网站免费无码av| 国内精品久久人妻无码不卡| 无码天堂亚洲国产AV| 内射人妻无码色AV天堂| 无码人妻aⅴ一区二区三区| 无码人妻H动漫中文字幕| 亚欧无码精品无码有性视频|