本文內容: 什麼是字元集?什麼是校對集? 查看字元集和校對集 設置字元集和校對集 mysql中的中文數據問題 首發日期:2018-04-19 什麼是字元集?什麼是校對集? 字元集是字母和符號的集合,每一個字元編碼都由字元集決定。 校對集是字母和符號的校對標準。校對集影響著字元的排序和搜索。 查看字元... ...
本文內容:
- 什麼是字元集?什麼是校對集?
- 查看字元集和校對集
- 設置字元集和校對集
- mysql中的中文數據問題
首發日期:2018-04-19
什麼是字元集?什麼是校對集?
- 字元集是字母和符號的集合,每一個字元編碼都由字元集決定。
- 校對集是字母和符號的校對標準。校對集影響著字元的排序和搜索。
查看字元集和校對集:
- 查看mysql支持的字元集:show character set;
- 查看mysql支持的校對集:show collation;
- 查看服務端預設的字元集:show variables like 'char%';
- 查看服務端預設的字元集:show variables like 'collation%';
服務端預設的字元集的意義:
服務端預設的校對集的意義:
設置字元集和校對集
設置資料庫數據表的字元集:
- 實際上,字元集很少是伺服器範圍(甚至資料庫範圍)的設置。不同的表,甚至不同的列都可能需要不同的字元集,而且兩者都可以在創建表時指定【語出mysql必知必會】。下麵介紹不使用預設配置來創建資料庫、數據表
設置服務端和客戶端的字元集:
- 語法:set character_set_xxx =字元集; 【character_set_xxx是上面查看字元集中的服務端的各個預設字元集,意義在上面已經標上了】【這種設置是會話級的,僅在當次連接生效。】
- 如果想要永久修改服務端的字元集:windows下修改my.ini文件【就是mysql的配置文件,可以從mysql服務中查看在哪】,在mysqld中將character-set-server的值修改為指定的字元集【修改的是服務端的字元集】
補充:
- 不可永久配置服務端認為客戶端的字元集,每一個連接過來的客戶端的字元集都是不確定的,應該由客戶端設置當次連接的字元集來指定字元集。
mysql中的中文數據問題:
- mysql中的中文數據問題本質上還是字元集問題,想要識別和存儲中文數據,必須設置能編碼中文的字元集。
- gbk和utf8都是支持mysql的,一般都是將mysql的字元集更改成utf8來識別中文。
- 如何配置(以gbk為例):
- 首先要考慮的一個是:如果你使用命令行模式,預設情況下字元的編碼格式是gbk的,也就是說客戶端的數據編碼是gbk的;
- 如果服務端要識別客戶端傳來的中文,那麼需要設置服務端認為客戶端的字元集為gbk;set character_set_client ='gbk';
- 如果服務端要返回中文給客戶端,需要將服務端返回給客戶端的數據的字元集設置為gbk;set character_set_results ='gbk';
- 對於單次會話,可以直接使用set names = 'gbk';【執行set names= 'gbk'就是把character_set_client、character_set_connection、character_set_results這3個參數值都設為gbk】