中文亂碼問題
當我第一次接觸mysql,首先讓我難受的是mysql的亂碼問題,百度上也有許多有關的解決方案,不過作為親身受害者,我想很有必要貼出我的心聲:
1.關於mysql的字符集處理
mysql在標識數據時采取二進制字符和非二進制字符格式,前者主要用來標識圖片,聲音,後者就完成剩余的所有功能,而對於後者,就存在字符集設置問題。
我們知道數據庫是老外搞出來的,他們在設計的時候並沒有考慮到編碼格式的問題,在計算機流行的現代每個國家為了支持本國的語言,都推出了自己本國的編碼格式,下面利用mysql命令列出世界上所有的編碼:
其中的GBK、gb2312、big5是中國的編碼
GBK:支持21000多個漢字,包括簡體和繁體,占2個字節
gb2312:支持6700多個漢字,占2個字節
big5:支持繁體字符集,主要是支持香港、台灣那邊的字符,繁體,13000多漢字,2個字節
國際標准化組織為了統一格式,創建了UTF8編碼,也就是unicode編碼的一種格式,稱為萬國碼,支持世界上的所有語言具體解決方案:
首先利用命令行,查看字符集:
解釋下亂碼原理:
當我們鏈接mysql數據庫時,實際上要經過下面幾個步驟:
客戶端->鏈接端->數據庫字段端->返回端
就是上面的貼圖中的
character_set_client character_set_connection character_set_database character_set_result
亂碼問題出現這幾個步驟中,只要其中某個步驟出錯,就會出現亂碼
當我們用程序在外部鏈接mysql 數據庫時,客戶端就是我們的程序軟件,所以要將客戶端設置成GBK或者gb2312,鏈接時設置為UTF8或者GBK,數據庫設置為gbk或utf8
返回設置成GBK,這樣一般就不會出現中文亂碼了
如下圖所示:
你可以通過命令行設置:
如果不考慮注入問題,你可以采取以下方法:
set names gbk ;
這條命令設置了客戶端、連接端、返回端均為GBK;
你也可以逐個設置:
在創建庫的時候設置字符集:
利用命令:
create database mydatabase default character set utf8;
在創建表的時候指定表的字符集:
利用命令:
create table user(name char(30) character set gbk) default character set gbk;
還有如下設置:
設置結果集:
set character_set_results=gbk;
設置連接字符集:
set character_set_connection=gbk;
因為我們現在是學習階段,不考慮內存容量問題,統一設置為UTF8,如果你的程序只支持漢語,你的作品向外發行最好選擇GBK編碼。。。。。
如果你按照上面的方法做還是發現程序運行有問題,請檢查您的程序是否也是UNICODE編碼,我以前就是因為這個原因。
啟動服務問題
我現在假設您在安裝mysql數據庫的時候建立了登錄用戶和密碼(mysql是免費的可以到官網下載)
安裝完成的mysql數據庫是開機自動運行的,如果您的mysql數據庫服務不小心被關閉,可以采取以下解決方案:
方案1:在桌面計算機圖標上單擊鼠標右鍵,
管理->服務和應用程序->服務 然後在列表中找到mysql服務項,單擊鼠標右鍵執行“啟動”,當然你也可以在這裡停止mysql服務。
方案2:
打開cmd(命令行),執行命令:
net start mysql55
注意:這裡的mysql55是我的PC上的MYSQl數據庫服務名,具體要按照自己PC的數據庫服務名執行。。。這個服務名是你安裝mysq數據庫指定的服務名。