MySQL字符集和校對規則

2021-05-22 14:32:15 字數 3134 閱讀 8342

本文對mysql支援的常規字符集和校對規則作了乙個簡單的說明,並介紹了mysql常用字符集變數的含義和設定,字符集變數的不恰當設定有可能導致包括亂碼在內的諸多問題。

字符集是一套符號和編碼。校對規則是在字符集內用於比較字元的一套規則。

mysql

伺服器能夠支援多種字符集,可以使用

show character set

語句列出可用的字符集。

任何乙個給定的字符集至少有乙個校對規則,它也可能存在幾個校對規則。

如果希望列出乙個字符集的校對規則,可以使用

show collation

語句。例如,如果希望查詢以latin1開頭的校對規則,可以使用如下語句show collation like 'latin1%'。

校對規則一般有如下特徵:

字符集和校對規則有四個級別的預設設定:伺服器級、資料庫級、表級和連線級。

mysql

資料庫有乙個伺服器字符集和乙個伺服器校對規則,它們均不能為空。在伺服器級別,當啟動

mysqld

時,根據使用的初始選項設定來確定伺服器字符集和校對規則。可以使用

—default-character-set

設定字符集,並且可以在字符集後面新增校對規則:

--default-collation

。每乙個資料庫有乙個資料庫字符集和乙個資料庫校對規則,它不能夠為空。

create database

和alter database

語句有乙個可選的子句來指定資料庫字符集和校對規則:

create database db_name

[[default] character set charset_name]

[[default] collate collation_name]

alter database db_name

[[default] character set charset_name]

[[default] collate collation_name]

預設資料庫的字符集和校對規則可以用作

character_set_database

和collation_database

系統變數。無論何時預設資料庫更改了,伺服器將設定這兩個變數的值。如果沒有預設資料庫,這兩個變數與相應的伺服器級別的變數(

character_set_server

和collation_server

)具有相同的值。

每乙個表有乙個表字符集和乙個校對規則,它不能為空。為指定表字符集和校對規則,

create table

和alter table

語句有乙個可選的子句。

create table tbl_name (column_list)

[default character set charset_name [collate collation_name]]

alter table tbl_name

[default character set charset_name] [collate collation_name]

每乙個「字元列」(即

char

、varchar

或text

型別的列)有乙個列字符集和乙個列校對規則,它不能為空。可以通過如下方式來指定列字符集和列校對規則:

col_name

(col_length)

[character set charset_name [collate collation_name]]

一些字符集和校對規則系統變數與客戶端和伺服器的互動有關。

在客戶端和伺服器的連線處理中也涉及了字符集和校對規則變數。每乙個客戶端有乙個連線相關的字符集和校對規則變數。

有兩個語句影響連線字符集:

其中,set names 『x』

語句與如下三個語句等價:

注:如果希望檢視上這些與字元有關的變數的值可以通過如下語句:show variables like 'character%';

對於mysql

客戶端,如果你希望使用與預設字符集不同的字符集,不需要每次啟動時執行

set names語句

以在mysql

語句行中或者選項檔案中新增乙個

—default-character-set

選項設定。如下:

[mysql]

default-character-set=koi8r

如果不希望伺服器執行任何轉換,設定

character_set_results

為null

。每乙個字串字元文字有乙個字符集和乙個校對規則,它不能為空。

乙個字串文字可能有乙個可選的字符集引介詞和

collate

子句。如下所示:

[_charset_name]'string' [collate collation_name]

binary

操作符是

collate

子句的乙個速記符。

binary『x』

等價於』x』 collate y

,這裡y

是字符集

'x'二元

校對規則的名字。每乙個字符集有乙個二元校對規則。

mysql 5.1

支援兩種字符集以儲存

unicode

資料:在

ucs-2

(二進位制

unicode

表示法)中,每乙個字元用乙個雙位元組的

unicode

編碼來表示的,第乙個位元組表示重要的意義。

utf8

字符集**換

unicode

表示)是儲存

unicode

資料的一種可選方法。它根據

rfc 3629

執行。utf8

字符集的思想是不同

unicode

字元採用變長位元組序列編碼。

以上內容多**於mysql參考手冊,如果需要更詳細的資訊,請檢視mysql參考手冊。

mysql字符集和校對規則 Mysql校對集

簡要說明 字符集和校對規則 字符集是一套符號和編碼。校對規則是在字符集內用於比較字元的一套規則。mysql在collation提供較強的支援,oracel在這方面沒查到相應的資料。校對規則一般分為兩類 binary collation,二元法,直接比較字元的編碼,可以認為是區分大小寫的,因為字符集中...

mysql字符集和校對規則 Mysql校對集

字符集的概念大家都清楚,校對規則很多人不了解,一般資料庫開發中也用不到這個概念,mysql在這方便貌似很先進,大概介紹一下 簡要說明 字符集和校對規則 字符集是一套符號和編碼。校對規則是在字符集內用於比較字元的一套規則。mysql在collation提供較強的支援,oracel在這方面沒查到相應的資...

字符集和校對規則

簡要說明 字符集和校對規則 字符集是一套符號和編碼。校對規則是在字符集內用於比較字元的一套規則。mysql在collation提供較強的支援,oracel在這方面沒查到相應的資料。校對規則一般分為兩類 binary collation,二元法,直接比較字元的編碼,可以認為是區分大小寫的,因為字符集中...