由於我們使用的資料庫管理軟體都是國外公司提供的,部分小型的資料庫管理軟體對中文的支援不太好,經常會遇到中文亂碼的問題,讓程式設計師非常苦惱。
本文主要講解mysql資料庫中文亂碼的問題。
工具/原料
phpmyadmin管理軟體
mysql資料庫; php開發語言
一、前言
前面幾篇文章主要講解了MySql產生亂碼的原因和解決辦法,都是以理論為主,本文將以一個小案例,給大家介紹一下如何在實戰中避免中文亂碼。
二、資料庫管理
首先,開啟phpMyAdmin管理頁面,在資料庫管理器選項中檢視“資料庫伺服器”的資料庫伺服器字符集是什麼,我的伺服器預設的字符集是UTF-8 Unicode (utf8)。其實,伺服器字符集對我們程式設計影響不大,只要在建立資料庫的時候設定好資料庫的字符集,就不會出現中文亂碼的問題了。
然後,我們開始建立資料庫,資料庫名字是demosql,資料庫的字符集比較糾結。通過下圖,大家看到字符集有很多,如何選擇合適的字符集對很多人來說都是一個難題。
MySQL的字符集在phpMyAdmin中給出了詳細的說明,但是看完了我仍然是一頭霧水。所以,我查閱了大量的資料,現在給大家小結一下。
對於中文而言,我們經常使用的字符集有兩大類:GBK和UTF-8。如果大家下載php的網站程式碼,就會發現很多公司都提供兩種程式碼包,一個是GBK的,另外一個是UTF8的。如果你的網站主要是針對國內,建議儘量選GBK,如果以國外如日、韓等為主,則選UTF-8,UTF-8佔用資料庫是GBK的1.5倍。我的網站因為要放在百度開發者平臺之中,百度雲資料庫預設的字符集編碼是UTF-8,所以我選用的是UTF-8。
UTF-8有很多,如何選擇呢?常用的有兩個utf8_general_ci和utf8_unicode_ci。它們的差別主要在德語和法語上,所以對於我們中國人來說,一般使用general,因為general更快。如果你對德語和法語的對比有更高的要求,才使用unicode,它比general更準確一些。
因為我的網站沒有德語和法語,所以我的資料庫選擇的字符集為utf8_general_ci。
資料庫建立好後,我們就可以新增資料表了。我的資料表名為teacher,欄位兩個
在資料表中,“整理”預設情況下為空,如果不更改設定,資料表中的資料將繼承資料庫的字符集utf8_general_ci,否則,以資料表的字符集為準。我這裡選擇預設值。
資料表建立成功後,我們插入資料,發現中文可以正常顯示,沒有出現亂碼的問題。至此,我們的工作成功了一半!加油!
PHP頁面查詢資料
在程式設計的過程中,我使用Macromedia Dreamweaver 8進行編碼。在“檔案”---“新建”中,選擇php,然後點選“首先引數”
預設編碼選擇UTF-8
然後,在建立的程式碼中,就會有
從而保證頁面的標題等內容出現中文後不會是亂碼
在php的程式碼中增加三行文字
mysql_query("SET NAMES UTF8");
mysql_query("set character_set_client=utf8");
mysql_query("set character_set_results=utf8");
這樣,就能保證查詢出來的中文不出現亂碼了