MySQL字符集概念及設定方法
一、字符集基本概念
1.字元(Character)是指人類語言中最小的表義符號。例如’A'、’B'等;
2.給定一系列字元,對每個字元賦予一個數值,用數值來代表對應的字元,這一數值就是字元的編碼(Encoding)。例如,我們給字元’A'賦予數值0,給字元’B'賦予數值1,則0就是字元’A'的編碼;
3.給定一系列字元並賦予對應的編碼後,所有這些字元和編碼對組成的集合就是字符集(Character Set)。例如,給定字元列表為{’A',’B'}時,{’A'=>0, ‘B’=>1}就是一個字符集;
4.字元序(Collation)是指在同一字符集內字元之間的比較規則;
5.確定字元序後,才能在一個字符集上定義什麼是等價的字元,以及字元之間的大小關係;
6.每個字元序唯一對應一種字符集,但一個字符集可以對應多種字元序,其中有一個是預設字元序(Default Collation);
7.MySQL中的字元序名稱遵從命名慣例:以字元序對應的字符集名稱開頭;以_ci(表示大小寫不敏感)、_cs(表示大小寫敏感)或_bin(表示按編碼值比較)結尾。例如:在字元序“utf8_general_ci”下,字元“a”和“A”是等價的;
二、MySQL預設字符集
MySQL對於字符集的指定可以細化到一個資料庫,一張表,一列.傳統的程式在建立資料庫和資料表時並沒有使用那麼複雜的配置,它們用的是預設的配置.
(1)編譯MySQL 時,指定了一個預設的字符集,這個字符集是 latin1;
(2)安裝MySQL 時,可以在配置檔案 (my.ini) 中指定一個預設的的字符集,如果沒指定,這個值繼承自編譯時指定的;
(3)啟動mysqld 時,可以在命令列引數中指定一個預設的的字符集,如果沒指定,這個值繼承自配置檔案中的配置,此時 character_set_server 被設定為這個預設的字符集;
(4)安裝 MySQL選擇多語言支援,安裝程式會自動在配置檔案中把default_character_set 設定為 UTF-8,保證預設情況下所有的資料庫所有表的所有列的都用 UTF-8 儲存。
三、MySQL字符集設定
1.系統變數:
– character_set_server:預設的內部操作字符集
– character_set_client:客戶端來源資料使用的字符集
– character_set_connection:連線層字符集
– character_set_results:查詢結果字符集
– character_set_database:當前選中資料庫的預設字符集
– character_set_system:系統後設資料(欄位名等)字符集
– 還有以collation_開頭的同上面對應的變數,用來描述字元序。
2.用introducer指定文字字串的字符集:
– 格式為:[_charset] ’string’ [COLLATE collation]
– 例如:
SELECT _latin1 ’string’;
SELECT _utf8 ‘你好’ COLLATE utf8_general_ci;
– 由introducer修飾的文字字串在請求過程中不經過多餘的轉碼,直接轉換為內部字符集處理。
四、修改my.cnf設定客戶端與服務端字符集
1.停止MySQL;service mysqld stop
2.備份my.cnf檔案:cp /etc/my.cnf /etc/my.cnf.bak
修改my.cnf
vi /etc/my.cnf
在[client]下新增,client為控制客戶端
default-character-set=utf8
在[mysqld]下新增,mysqld為控制伺服器端
default-character-set=utf8
3.重啟MySQL
spark220:mysqladmin:/usr/local/mysql:>service mysqld restart
4.檢視字符集是否已經修改
mysql>show variables like '%char%';
注:修改配置檔案,並重啟伺服器,才可以永久生效
五、檢測字符集
mysql> SHOW CHARACTER SET;
mysql> SHOW COLLATION;
mysql> SHOW VARIABLES LIKE 'character%';
mysql> SHOW VARIABLES LIKE 'collation%';
mysql> SQL函式HEX、LENGTH、CHAR_LENGTH
mysql> SQL函式CHARSET、COLLATION
MySQL的字符集主要是兩個概念,一個是Character Sets,一個是Collations,前者是字元內容及編碼,後者是對前者進行比較操作的一些規則。這兩個引數集可以在資料庫例項、單個資料庫、表、列等四個級別指定。對於使用者來說,一般推薦使用utf8編碼來儲存資料。而要解決亂碼問題,不單單是MySQL資料的儲存問題,還和使用者的程式檔案的編碼方式、使用者程式和MySQL資料庫的連線方式都有關係。
客戶端的連線是沒有作用的,客戶端這時候一般需要指定utf8方式連線才能避免亂碼。也就是傳說總的set names命令。
set names utf8命令對應的是伺服器端以下幾個命令:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
注:三個引數是不能寫在配置檔案my.cnf裡的,只能透過set命令來動態修改,但在init_connect裡設定,這個命令在每
個普通使用者連線上來的時候都會觸發執行,可以在[mysqld]部分增加以下一行設定連線字符集:
在[mysqld]下新增:
init_connect = 'SET NAMES utf8'
總結:
1、編譯安裝MySQL的時候指定兩個引數使用utf8編碼。
2、配置檔案my.cnf設定兩個引數,同時設定init_connect引數。
3、配置檔案my.cnf設定兩個引數,同時客戶端的連線指定set names命令。
4、配置檔案my.cnf裡的client和server處加入default-character-set引數方便管理。
若澤大資料交流群:671914634
1.字元(Character)是指人類語言中最小的表義符號。例如’A'、’B'等;
2.給定一系列字元,對每個字元賦予一個數值,用數值來代表對應的字元,這一數值就是字元的編碼(Encoding)。例如,我們給字元’A'賦予數值0,給字元’B'賦予數值1,則0就是字元’A'的編碼;
3.給定一系列字元並賦予對應的編碼後,所有這些字元和編碼對組成的集合就是字符集(Character Set)。例如,給定字元列表為{’A',’B'}時,{’A'=>0, ‘B’=>1}就是一個字符集;
4.字元序(Collation)是指在同一字符集內字元之間的比較規則;
5.確定字元序後,才能在一個字符集上定義什麼是等價的字元,以及字元之間的大小關係;
6.每個字元序唯一對應一種字符集,但一個字符集可以對應多種字元序,其中有一個是預設字元序(Default Collation);
7.MySQL中的字元序名稱遵從命名慣例:以字元序對應的字符集名稱開頭;以_ci(表示大小寫不敏感)、_cs(表示大小寫敏感)或_bin(表示按編碼值比較)結尾。例如:在字元序“utf8_general_ci”下,字元“a”和“A”是等價的;
二、MySQL預設字符集
MySQL對於字符集的指定可以細化到一個資料庫,一張表,一列.傳統的程式在建立資料庫和資料表時並沒有使用那麼複雜的配置,它們用的是預設的配置.
(1)編譯MySQL 時,指定了一個預設的字符集,這個字符集是 latin1;
(2)安裝MySQL 時,可以在配置檔案 (my.ini) 中指定一個預設的的字符集,如果沒指定,這個值繼承自編譯時指定的;
(3)啟動mysqld 時,可以在命令列引數中指定一個預設的的字符集,如果沒指定,這個值繼承自配置檔案中的配置,此時 character_set_server 被設定為這個預設的字符集;
(4)安裝 MySQL選擇多語言支援,安裝程式會自動在配置檔案中把default_character_set 設定為 UTF-8,保證預設情況下所有的資料庫所有表的所有列的都用 UTF-8 儲存。
三、MySQL字符集設定
1.系統變數:
– character_set_server:預設的內部操作字符集
– character_set_client:客戶端來源資料使用的字符集
– character_set_connection:連線層字符集
– character_set_results:查詢結果字符集
– character_set_database:當前選中資料庫的預設字符集
– character_set_system:系統後設資料(欄位名等)字符集
– 還有以collation_開頭的同上面對應的變數,用來描述字元序。
2.用introducer指定文字字串的字符集:
– 格式為:[_charset] ’string’ [COLLATE collation]
– 例如:
SELECT _latin1 ’string’;
SELECT _utf8 ‘你好’ COLLATE utf8_general_ci;
– 由introducer修飾的文字字串在請求過程中不經過多餘的轉碼,直接轉換為內部字符集處理。
四、修改my.cnf設定客戶端與服務端字符集
1.停止MySQL;service mysqld stop
2.備份my.cnf檔案:cp /etc/my.cnf /etc/my.cnf.bak
修改my.cnf
vi /etc/my.cnf
在[client]下新增,client為控制客戶端
default-character-set=utf8
在[mysqld]下新增,mysqld為控制伺服器端
default-character-set=utf8
3.重啟MySQL
spark220:mysqladmin:/usr/local/mysql:>service mysqld restart
4.檢視字符集是否已經修改
mysql>show variables like '%char%';
注:修改配置檔案,並重啟伺服器,才可以永久生效
五、檢測字符集
mysql> SHOW CHARACTER SET;
mysql> SHOW COLLATION;
mysql> SHOW VARIABLES LIKE 'character%';
mysql> SHOW VARIABLES LIKE 'collation%';
mysql> SQL函式HEX、LENGTH、CHAR_LENGTH
mysql> SQL函式CHARSET、COLLATION
MySQL的字符集主要是兩個概念,一個是Character Sets,一個是Collations,前者是字元內容及編碼,後者是對前者進行比較操作的一些規則。這兩個引數集可以在資料庫例項、單個資料庫、表、列等四個級別指定。對於使用者來說,一般推薦使用utf8編碼來儲存資料。而要解決亂碼問題,不單單是MySQL資料的儲存問題,還和使用者的程式檔案的編碼方式、使用者程式和MySQL資料庫的連線方式都有關係。
客戶端的連線是沒有作用的,客戶端這時候一般需要指定utf8方式連線才能避免亂碼。也就是傳說總的set names命令。
set names utf8命令對應的是伺服器端以下幾個命令:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
注:三個引數是不能寫在配置檔案my.cnf裡的,只能透過set命令來動態修改,但在init_connect裡設定,這個命令在每
個普通使用者連線上來的時候都會觸發執行,可以在[mysqld]部分增加以下一行設定連線字符集:
在[mysqld]下新增:
init_connect = 'SET NAMES utf8'
總結:
1、編譯安裝MySQL的時候指定兩個引數使用utf8編碼。
2、配置檔案my.cnf設定兩個引數,同時設定init_connect引數。
3、配置檔案my.cnf設定兩個引數,同時客戶端的連線指定set names命令。
4、配置檔案my.cnf裡的client和server處加入default-character-set引數方便管理。
若澤大資料交流群:671914634
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31511218/viewspace-2149668/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 設定Mysql字符集MySql
- mysql字符集設定MySql
- mysql字符集檢視與設定MySql
- 修改mysql預設字符集的方法MySql
- 關於mysql字符集及排序規則設定MySql排序
- MySQL字符集基本概念和詳細設定MySql
- 檢視和設定MySQL資料庫字符集MySql資料庫
- MySQL DB字符集修改方法MySql
- MySQL 字符集與亂碼與collation設定的問題?MySql
- 【勝通 】mysql字符集與校驗規則的設定MySql
- mysql 5 安裝時或者安裝後設定字符集MySql
- create database 字符集設定Database
- MySQL字元編碼設定方法MySql字元
- linux下設定mysql資料庫字符集utf8LinuxMySql資料庫
- 設定PL/SQL Developer 字符集SQLDeveloper
- PG 字符集設定(轉帖)
- mysql學習之-字符集選定,修改。MySql
- MySQL 不同版本預設字符集MySql
- MySQL運維實戰(5.6) 字符集設定對mysqldump的影響MySql運維
- 設定ORACLE客戶端字符集Oracle客戶端
- MySQL檢視和修改字符集的方法MySql
- MySQL字符集設定及字元轉換(latin1轉utf8)MySql字元
- linux mysql5.7以上設定中文字符集不在/mysql/my.cnf下面了LinuxMySql
- Oracle exp 設定客戶端字符集Oracle客戶端
- php 設定字符集為utf-8PHP
- MySQL 5.7線上設定忽略表複製方法MySql
- Mysql 繫結內部IP的設定方法MySql
- MySQL字符集MySql
- MySQL 檢視與修改預設字符集MySql
- MySQL修改表預設字符集行為MySql
- Eclipse更改預設字符集 設定UTF-8Eclipse
- MySQL設定當前時間為預設值的方法MySql
- 介紹三種檢視MySQL字符集的方法MySql
- Linux字符集環境變數設定Linux變數
- Linux設定語言編碼(字符集)Linux
- MySQL入門--設定session,global變數的方法MySqlSession變數
- 【Mysql 學習】mysql 字符集MySql
- Oracle字符集的檢視查詢和Oracle字符集的設定修改Oracle