mysql 更改默認字符集


mysql 默認字符集概述

首先,MySQL的字符集問題主要是兩個概念:

  • haracter Sets
  • Collations

前者是字符內容及編碼,后者是對前者進行比較操作的一些規則。這兩個參數集可以在數據庫實例單個數據庫等四個級別指定。

對於使用者來說,一般推薦使用utf8編碼來存儲數據。而要解決亂碼問題,不單單是MySQL數據的存儲,還和用戶程序文件的編碼方式、用戶程序和MySQL數據庫的連接方式都有關系。

服務端

編譯安裝Mysql時可以指定默認字符集 -- 將編碼問題扼殺在搖籃里

MySQL有默認的字符集,這個是安裝的時候確定的,在編譯MySQL的時候可以通過這兩個參數來指定默認的字符集為utf8
在MySQL5.5版本中

DEFAULT_CHARSET=utf8
DEFAULT_COLLATION=utf8_general_ci

在mysql5.1版本中

--with-charset=utf8
--with-collation=utf8_general_ci

這樣指定后,客戶端連接到數據庫的編碼方式也默認是utf8了,應用程序不需要任何處理。

二進制安裝后修改默認字符集 -- 補救行動

通過二進制程序的方式安裝,那么這時候MySQL的默認字符集是latin1,可以修改my.cnf文件中參數,改變默認字符集。
首先,解決數據存儲和比較的問題,但是對客戶端的連接是沒有作用的。

  1. 在[mysqld]下添加
    mysql 5.5 版本
character-set-server=utf8

mysql 5.1 版本

default-character-set=utf8
  1. [client]下添加
default-character-set=utf8

這樣建數據庫建表的時候的默認字符集就是utf8

客戶端

客戶端登錄時需要設置這幾個參數,但這三個參數是不能寫在配置文件my.cnf里,只能通過set命令來動態修改

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

init_connect命令在每個普通用戶連接上來的時候都會觸發執行,可以在[mysqld]部分增加以下一行設置連接字符集:
[mysqld]下添加:

init_connect = 'SET NAMES utf8'

但是要注意的是,這個命令對具有super權限的用戶是不生效的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM