mysql是我們專案中非常常用的資料型資料庫。但是因為我們需要在資料庫儲存中文字元,所以經常遇到資料庫亂碼情況。下面就來介紹一下如何徹底解決資料庫中文亂碼情況。
1、中文亂碼
1.1、中文亂碼
無法插入中文字元:
1.2、檢視表字元編碼
我們可以看到表的預設字符集是latin1.
所以我們在建立表的時候就需要指定表的字符集:
這樣在linux裡面可以訪問並且可以插入與訪問這個表了。
1.3、資料庫與作業系統編碼
雖然在伺服器端可以顯示中文正常,但是在客戶端可能會顯示亂碼。因為我們的伺服器是utf8。
而且資料庫的編碼也存在問題。
這裡我們可以看character_sert_database與character_set_server的字符集都是latin1.那麼在mysql資料庫中,server,database,table的字符集都預設是latin1.下面我們就來看看如何解決mysql亂碼情況。
2、mysql設定變數的範圍
2.1、session範圍
檢視資料庫編碼:
修改字元編碼:
我們可以看到字符集已經修改成都是utf8了。但是這裡有乙個問題,那就是我們重新開啟乙個命令視窗然後檢視資料編碼就會出現下面的畫面:
2.2、global範圍
mysql設定變數的範圍預設是session範圍。如果設定多個會話的字符集那麼需要設定global範圍:set [global|session] variables …
當我們跨會話檢視mysql字符集都會看到都是utf8。如果你以為萬事大吉了的話,那麼你就大錯特錯了。
2.3、設定資料全域性範圍
當我們資料庫重啟的時候,你們發現設定global範圍的值又變成latin1了。
不要怕,下面就教你終極大招:
修改mysql配置檔案/etc/my.cnf。
請注意這幾個引數配置的位置,不然可能會啟動不起來mysql服務:
ok。這下如果你重啟mysql服務也會發現它的字符集是utf8.
而且我們建立表的時候不需要指定字元編碼,它預設就是utf8;
3、總結
我看網上很多答案都是直接在session級別設定mysql的字元編碼,這是治標不治本的方法。我們還是要從源頭上解決這個問題。那就是修改mysql預設的配置檔案,把它的字符集修改成能夠使用中文字元的utf8就ok了。
Mysql中文亂碼解決
mysql插入中文亂碼 我們在安裝mysq的時候就制訂了mysql編碼為utf 8,如果想解決亂碼,最簡單的乙個方法就是制定mysql編碼為gb2312 我們通過客戶端提交資料的時候,輸入法是採用gb2312對輸入的中文資料進行編碼,並將它們存入資料庫,但是我們 已經指定了mysq客戶端的編碼是ut...
mysql中文亂碼解決
在windows上安裝了wamp環境。通過phpadmin建立了的表,字串編碼設定成utf8,在phpadmin中新增和查詢資料中文顯示都正常,但在自己寫的php網頁查詢顯示中文亂碼。網上搜尋有的文章基本都說在my.ini的 client mysql mysqld 都新增default charac...
解決Mysql中文亂碼
亂碼產生原因 mysql 字元編碼是版本4.1引入的,支援多國語言,而且一些特性已經超過了其它大多數資料庫管理系統。正因為這一特性才導致 mysql 的亂碼問題。字符集是一套符號和編碼。校對規則是在字符集內用於比較字元的一套規則。檢視系統的字符集用下面的命令 show variables like ...