1、Windowsmysql
一、停止MySQL服務sql
二、在MySQL的安裝目錄下找到my.ini,若是沒有就把my-medium.ini複製爲一個my.ini便可數據庫
三、打開my.ini之後,在[client]和[mysqld]下面均加上default-character-set=utf8,保存並關閉編碼
四、啓動MySQL服務繼承
2、Linuxio
一、停止MySQL服務(bin/mysqladmin -u root shutdown)cli
二、在/etc/下找到my.cnf,若是沒有就把MySQL的安裝目錄下的support-files目錄下的my-medium.cnf複製到/etc/下並更名爲my.cnf便可亂碼
三、打開my.cnf之後,在[client]和[mysqld]下面均加上default-character-set=utf8,保存並關閉file
四、啓動MySQL服務(bin/mysqld_safe&)sql語句
很是簡單,這樣的修改一勞永逸,從此MySQL一切相關的默認編碼均爲UTF-8了,建立新表格的時候無需再次設置
須要注意的是,當前數據庫中已經存在的數據仍保留現有的編碼方式,所以須要自行轉碼,方法在網上有不少,再也不贅述
方案2、通常在MYSQL使用中文查詢都是用 set NAMES character
-
-
character_set_client ,這是用戶告訴MySQL查詢是用的什麼字符集。
character_set_connection ,MySQL接受到用戶查詢後,按照character_set_client將其轉化爲character_set_connection設定的字符集。
character_set_results , MySQL將存儲的數據轉換成character_set_results中設定的字符集發送給用戶。
SET NAMES 'x'語句與這三個語句等價:
mysql> SET character_set_client = x;mysql> SET character_set_results = x;mysql> SET character_set_connection = x;
SET character_set_client = binary;使用二進制字符集查詢 此三處的字符設定很大程度上會解決亂碼問題,那麼着三個設定具體有什麼做用呢? character_set_client指定的是Sql語句的編碼,若是設置爲binary,mysql就當二進制來處 理,character_set_connection指定了mysql 用來運行sql語句的時候使用的編碼,也就是說,程序發送給MySQL 的SQL語句,會首先被MySQL從character_set_client指定的編碼轉換到character_set_connection指定的 編碼,若是character_set_clien指定的是binary,則MySQL就會把SQL語句按照 character_set_connection指定的編碼解釋執行. 當執行SQL語句的過程當中,好比向數據庫中插入字段的時候,字段也有編碼設置,若是字段的編碼設置和character_set_connection指 定的不一樣,則MySQL 會把插入的數據轉換成字段設定的編碼。SQL語句中的條件判斷和SQL插入語句的執行過程相似. 當SQL執行完畢像客戶端返回數據的時候,會把數據從字段指定的編碼轉換爲character_set_results指定的編碼,若是 character_set_results=NULL則不作任何轉換動做,(注意這裏設置爲NULL不等於沒有設置,沒有設置的時候MySQL會繼承全 局設置), 工做中比較有用的就是利用MySQL進行轉碼、不一樣編碼的數據庫之間共用數據。