當前位置:首頁 » 操作系統 » mysql資料庫字元集

mysql資料庫字元集

發布時間: 2022-05-24 02:54:28

① Mysql 資料庫4種字元集查看方法

1、查看數據表的字元集
mysql>
show
create
table
mytable;
這個命令也可以查看建這個表的SQL語句。

2、查看資料庫連接情況:
mysql>show
processlist;
mysql>show
processlist\G;

3、使用SHOW
CHARACTER
SET語句列出資料庫中可用的字元集:

4、要想列出一個字元集的校對(Collation)規則,使用SHOW
COLLATION語句。
例如,要想查看latin1(「西歐ISO-8859-1」)字元集的校對規則,使用下面的語句查找那些名字以latin1開頭的校對規則:
mysql>
SHOW
COLLATION
LIKE
'latin1%';

② 關於mysql資料庫字元編碼的問題、中文亂碼!

一、轉碼失敗
在數據寫入到表的過程中轉碼失敗,資料庫端也沒有進行恰當的處理,導致存放在表裡的數據亂碼。
針對這種情況,前幾篇文章介紹過客戶端發送請求到服務端。
其中任意一個編碼不一致,都會導致表裡的數據存入不正確的編碼而產生亂碼。
比如下面簡單一條語句:
set @a = "文本字元串";
insert into t1 values(@a);
1. 變數 @a 的字元編碼是由參數 CHARACTER_SET_CLIENT 決定的,假設此時編碼為 A,也就是變數 @a 的編碼。
2. 寫入語句在發送到 MySQL 服務端之前的編碼由 CHARACTER_SET_CONNECTION 決定,假設此時編碼為 B。
3. 經過 MySQL 一系列詞法,語法解析等處理後,寫入到表 t1,表 t1 的編碼為 C。
那這里編碼 A、編碼 B、編碼 C 如果不兼容,寫入的數據就直接亂碼。
二、客戶端亂碼
表數據正常,但是客戶端展示後出現亂碼。
這一類場景,指的是從 MySQL 表裡拿數據出來返回到客戶端,MySQL 里的數據本身沒有問題。客戶端發送請求到 MySQL,表的編碼為 D,從 MySQL 拿到記錄結果傳輸到客戶端,此時記錄編碼為 E(CHARACTER_SET_RESULTS)。
那以上編碼 E 和 D 如果不兼容,檢索出來的數據就看起來亂碼了。但是由於數據本身沒有被破壞,所以換個兼容的編碼就可以獲取正確的結果。
這一類又分為以下三個不同的小類:
1)欄位編碼和表一致,客戶端是不同的編碼
比如下面例子, 表數據的編碼是 utf8mb4,而 SESSION 1 發起的連接編碼為 gbk。那由於編碼不兼容,檢索出來的數據肯定為亂碼。
2)表編碼和客戶端的編碼一致,但是記錄之間編碼存在不一致的情形
比如表編碼是 utf8mb4,應用端編碼也是 utf8mb4,但是表裡的數據可能一半編碼是 utf8mb4,另外一半是 gbk。那麼此時表的數據也是正常的,不過此時採用哪種編碼都讀不到所有完整的數據。這樣數據產生的原因很多,比如其中一種可能性就是表編碼多次變更而且每次變更不徹底導致(變更不徹底,我之前的篇章里有介紹)。舉個例子,表 t3 的編碼之前是 utf8mb4,現在是 gbk,而且兩次編碼期間都被寫入了正常的數據。
3)每個欄位的編碼不一致,導致亂碼
和第二點一樣的場景。不同的是:非記錄間的編碼不統一,而是每個欄位編碼不統一。舉個例子,表 c1 欄位 a1,a2。a1 編碼 gbk,a2 編碼是 utf8mb4。那每個欄位單獨讀出來數據是完整的,但是所有欄位一起讀出來,數據總會有一部分亂碼。
三、LATIN1
還有一種情形就是以 LATIN1 的編碼存儲數據
估計大家都知道字元集 LATIN1,LATIN1 對所有字元都是單位元組流處理,遇到不能處理的位元組流,保持原樣,那麼在以上兩種存入和檢索的過程中都能保證數據一致,所以 MySQL 長期以來默認的編碼都是 LATIN1。這種情形,看起來也沒啥不對的點,數據也沒亂碼,那為什麼還有選用其他的編碼呢?原因就是對字元存儲的位元組數不一樣,比如 emoji 字元 "❤",如果用 utf8mb4 存儲,佔用 3 個位元組,那 varchar(12) 就能存放 12 個字元,但是換成 LATIN1,只能存 4 個字元。

③ MySQL中資料庫的默認字元集和校對規則有哪些

1. ASCII
用途:用來映射簡單的單位元組字元,比如大小寫英文字母、阿拉伯數字、常用的標點符、運算符、控制字元等。
編碼范圍:U+0000 - U+007F
注意:對於用這類字元的場景夠用了,但是卻無法表達比如漢字,日文等編碼。
2. UNICODE
用途:用來映射包含 ASCII 以內的其他的所有字元。
編碼范圍:U+0000 - U+10FFFF
注意:ASCII 是 UNICODE 的子集,ASCII 編碼的字元可以無損轉換為 UNICODE 編碼的字元。

MySQL 常用字元集

1. Latin1
Latin1 是 cp1252 或者 ISO-8859-1 的別名。ISO-8859-1 編碼是單位元組編碼,向下兼容 ASCII。
編碼范圍:U+0000 - U+00FF

ISO-8859-1 收錄的字元除 ASCII 收錄的字元外,還包括西歐語言、希臘語、泰語、阿拉伯語、希伯來語對應的文字元號。
單位元組內的空間都被 ISO-8859-1 編碼佔用,所以能夠用 ISO-8859-1 編碼存儲、傳輸其他任何編碼的位元組流。
比如把一個 Utf8mb4 的編碼或者 GBK 的編碼存入 Latin1,不會有任何問題。因為 Latin1 保留了原始的位元組流,這也就是 MySQL 長期以來把 Latin1 做默認字元集的原因。
但是由於 Latin1 對任何字元都存放位元組流,造成了字元個數的浪費。
比如:
CHAR(10) CHARACTER SET LATIN1;CHAR(10) CHARACTER SET UTF8;

該欄位中存儲字元個數 UTF8 是 Latin1 的三倍!!!
2. GB18030
GB18030 是中國官方標准字元集,向前兼容 GBK、GB2312,是這兩個的超集。用 1、2、4 個位元組分別表示一個符號。比如對一般中文字元,默認是用兩個位元組編碼存儲。Windows 系統,默認用的就是 GB18030。
若只是存儲中文字元,那 GB18030 最佳。
原因有兩點:
1)佔用空間小,比如比 UTF8 小。
2)存儲的漢字根據拼音來排序,檢索快。
3. UTF8
UTF8 是 Unicode 的編碼實現,可以存儲 UNICODE 編碼對應的任何字元, 這也是使用最多的一種編碼。最大的特點就是變長的編碼方式,用 1 到 4 個位元組表示一個符號,可以根據不同的符號編碼位元組長度。
字母或數字用 1 位元組,漢字用 3 位元組,emoji 表情符號用 4 位元組。UTF8 字元集目前是使用最廣泛的。
注意!MySQL 里常說的 UTF8 是 UTF8MB3 的別名,UTF8MB3 是 UTF8MB4 的子集,UTF8MB4 才是真正的 4 位元組 UTF8 字元集!
UTF8MB3 表示最大支持 3 個位元組存儲字元,UTF8MB4 表示最大 4 個位元組存儲字元。根據實際需要和未來展望,MySQL 8.0 已經默認用 UTF8MB4 基礎字元集。

④ mysql資料庫中,查看當前支持的字元集有哪些

分不同的類型,可按以下三種方式查詢:

一、查看MySQL資料庫伺服器和資料庫MySQL字元集。

命令:

1mysql>showvariableslike'%char%';

⑤ mysql 建資料庫用什麼字元集

mysql創建資料庫一般使用的字元集為UTF-8,但具體的要根據實際情況進行選擇。

工具:mysql5.6,Navicat Premium

步驟:

1、打開Navicat Premium,雙擊左側伺服器的樹形結構,連接到伺服器,這里以localhost為例。

⑥ 怎樣修改mysql資料庫字元集

首先,MySQL的字元集問題主要是兩個概念,一個是Character Sets,一個是Collations,前者是字元內容
及編碼,後者是對前者進行比較操作的一些規則。這兩個參數集可以在資料庫實例、單個資料庫、表、列等四個級
別指定。
對於使用者來說,一般推薦使用utf8編碼來存儲數據。而要解決亂碼問題,不單單是MySQL數據的存儲問題,還
和用戶的程序文件的編碼方式、用戶程序和MySQL資料庫的連接方式都有關系。

首先,MySQL有默認的字元集,這個是安裝的時候確定的,在編譯MySQL的時候可以通過DEFAULT_CHARSET=
utf8和DEFAULT_COLLATION=utf8_general_ci這兩個參數(MySQL5.5版本,5.1版本用--with-charset=
utf8 --with-collation=utf8_general_ci)來指定默認的字元集為utf8,這也是最一勞永逸的辦法,這樣指定後,
客戶端連接到資料庫的編碼方式也默認是utf8了,應用程序不需要任何處理。

但是遺憾的是,很多人編譯安裝MySQL的時候沒有指定這兩個參數,大多數人更是通過二進製程序的方式安裝,那
么這時候MySQL的默認字元集是latin1。而這時候我們仍然可以指定MySQL的默認字元集,通過my.cnf文件增加
兩個參數:
1.在[mysqld]下添加
default-character-set=utf8(mysql 5.5 版本添加character-set-server=utf8)
2.在[client]下添加
default-character-set=utf8
這樣我們建資料庫建表的時候就不用特別指定utf8的字元集了。配置文件里的這種寫法解決了數據存儲和比較的問題
,但是對客戶端的連接是沒有作用的,客戶端這時候一般需要指定utf8方式連接才能避免亂碼。也就是傳說總的set
names命令。事實上,set names utf8命令對應的是伺服器端以下幾個命令:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = xutf8;
但這三個參數是不能寫在配置文件my.cnf里的。只能通過set命令來動態修改。我們需要的是在配置文件里寫好一勞
永逸的辦法。那麼這時候,是否有在服務端解決問題的辦法呢,可行的思路是在init_connect里設置。這個命令在每
個普通用戶連接上來的時候都會觸發執行,可以在[mysqld]部分增加以下一行設置連接字元集:
在[mysqld]下添加:
init_connect = 'SET NAMES utf8'
總結:
1、首選在編譯安裝MySQL的時候指定兩個參數使用utf8編碼。
2、次選在配置文件my.cnf或my.ini設定兩個參數,同時設置init_connect參數。
3、第三在配置文件my.cnf或my.ini設定兩個參數,同時客戶端的連接指定set names命令。
4、在配置文件my.cnf里的client和server處加入default-character-set參數方便管理。

⑦ 如何查看mysql資料庫的編碼字元集

基本上現在的字元集 MySQL 都支持,查看 MySQL 支持的字元集列表, 有兩種方法:
1. SQL 語句
2. 查看元數據字典表
查詢結果:
1)第一列代表字元集名字;
2)第二列表示字元集排序規則;
3)第三列表示字元集描述;
4)第四列表示字元集編碼的最大位元組數。

⑧ 怎麼更改mysql資料庫中的欄位字元集

關鍵字:字元集gbkutf8開始表w的字元集設置成了gbk,但是現在的建的表要求字元集為utf8。於是:alter
table
`w`
default
character
set
utf8;或者alter
table
tbl_name
convert
to
character
set
charset_name;但是發現其中一個欄位content的字元集還是gbk。於是更改mysql資料庫表中某個欄位的字元集,修改欄位的定義:alter
table
`w`
modify
column
`content`
varchar(30)
character
set
utf8
not
null;

⑨ mysql建表的時候設置表裡面的欄位的字元集是utf-8要怎麼設置默認建好後我去mysql里看字元集都是gbk

1、建表時指定字元集utf-8:

CREATE TABLE表名

( `id` TINYINT( 255 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`content` VARCHAR( 255 ) NOT NULL)

DEFAULT CHARACTER SET = utf8;

2、修改表的字元集為utf-8:

alter table 表名 convert to character set utf8;

(9)mysql資料庫字元集擴展閱讀:

1、創建資料庫時設置字元集:

CREATE DATABASE資料庫名 CHARACTER SET utf8 COLLATE utf8_general_ci;

注意後面三個單詞之間是有下劃線的對於每個選項所給定的值,前面沒有等號;在第一個選項和第二個選項之間也沒有逗號。

2、修改資料庫的字元集:

alter database資料庫名 character set utf8;

3、顯示某資料庫字元集設置:

show create database 資料庫名;

4、顯示某數據表字元集設置:

show create table 表名;

5、修改欄位:

alter table 表名 modify column '欄位名' varchar(30) character set utf8 not null;

6、添加表欄位:

alter table 表名 add column '欄位名' varchar (20) character set utf8;

⑩ 如何設置Mysql資料庫默認的字元集編碼為GBK

1、更改伺服器的編碼方式,在終端輸入以下命令:
mysqld
--character-set-server=gbk
--collation-server=gbk_chinese_ci;
2、更改某個資料庫的編碼方式
mysql
-u
root
-p
alter
database
character
set
gbk
collate
gbk_chinese_ci;
3、在創建資料庫時指定編碼:
mysql
-u
root
-p
create
database
db_name
character
set
gbk
collate
gbk_chinese_ci;
4、更改某個表的編碼方式
mysql
-u
root
-p
db_name
alter
table
table_name
convert
to
charachter
set
gbk
collate
gbk_chinese_ci;
5、在創建表時指定編碼方式
mysql
-u
root
-p
db_name
create
table
table_name
(....)
character
set
gbk
collate
gbk_chinese_ci;
6、更改某行的編碼方式
mysql
-u
root
-p
db_name
alter
table
table_name
modify
column_name
varchar(20)
character
set
gbk
collate
gbk_chinese_ci;
7、在創建列時指定編碼方式:
</pre><pre
name="code"
class="sql">mysql
-u
root
-p
db_name
create
table
table_name
(...,
col1
varchar(20)
character
set
gbk
collate
gbk_chinese_ci,
...)
character
set
utf8
collate
utf8_general_ci;

熱點內容
微信指紋支付多少錢要用密碼 發布:2024-10-26 20:56:04 瀏覽:807
flash游戲反編譯 發布:2024-10-26 20:43:59 瀏覽:710
java的hashmap緩存 發布:2024-10-26 20:33:07 瀏覽:116
紅米2存儲空間不足 發布:2024-10-26 20:33:05 瀏覽:297
java源碼pdf 發布:2024-10-26 20:22:45 瀏覽:804
中文安卓編程 發布:2024-10-26 20:18:27 瀏覽:821
sql傳遞參數 發布:2024-10-26 20:06:57 瀏覽:248
安卓手機去哪裡找游戲 發布:2024-10-26 20:03:24 瀏覽:913
安卓手機圖標誤刪如何恢復 發布:2024-10-26 19:38:34 瀏覽:917
彈跳的編程 發布:2024-10-26 19:37:28 瀏覽:455