MySQL字元集小結

來源:互聯網
上載者:User

標籤:href   不能   升級   roo   ati   用戶端   佔用   語句   長度   

一:什麼是字元集

 字元集支援多層面:伺服器層(server)、資料庫層(database)、資料表(table)、欄位(column)、串連(connect)、結果集(result)。
1.字元集是一套符號和編碼規則,字串必須有相應的字元集。2.校正集是這套符號和編碼的校正規則,定義字元定序,字串之間比較的規則。3.非ASCII字元在不同字元集中,其所需的位元組數是不一樣的。4.多位元組字元間是以字元進行比較,而非以位元組為單位比較。5.個別校正集是二進位的,基於字元對應的數值進行比較。6.XXX_bin 將字串中的每一個字元用位元據儲存,區分大小寫。7.XXX_general_ci 不區分大小寫,ci為case insensitive的縮寫,即大小寫不敏感。8.XXX_general_cs 區分大小寫,   cs為case sensitive的縮寫,即大小寫敏感。  二:常用字元集介紹(1):gbk/gb23121.gb2312是雙位元組字元集,不論中、英字元均使用雙位元組來表示,為了區分中文,將其最高位都設為1.2.gb2312是gbk的子集,gbk是gb18030的子集。3.gbk包括中日韓字元的大字元集合。4.通常使用gbk字元集足夠。5.國際通用性比utf8差,不過utf8佔用的資料庫比gbk大(三位元組字元集)。6.gbk、gb2312等字元集與utf8之間必須通過unicode編碼才能互相轉換。 gbk、gb2312 => Unicode => utf8utf8 => Unicode => gbk、gb2312(2):utf81.8-bit Unicode Tuansformation Format,三位元組字元集。2.是Unicode的一種儲存方式,可變長度字元編碼,又稱萬國碼。3.UTF-8使用可變長度位元組來儲存 Unicode字元,例如ASCII字母繼續使用1個位元組儲存,重音文字、希臘文字或西裡爾字母等使用2個位元組來儲存,而常用的漢字就要使用3個位元組。4.資料庫字元集盡量使用UTF8(用戶端串連connect)及結果(result)字元集也採用UTF8字元集,最終HTML頁面亦是採用UTF8。  http://baike.baidu.com/view/25412.htm ASCII是7位字元集,但不能覆蓋歐洲語言中的特殊字元。lantin1是7位字元集,但不能覆蓋亞洲,非洲語言。 unicode是lantin1的擴充,增加了亞洲、非洲常規語言支援,但仍不支援全部語言,且ASCII用unicode來表示效率不高。utf8是unicode的擴充。MySQL 4.x 版本及以前,CHAR(n)表示能儲存多少位元組數,實際能儲存多少字元數和字元集沒有關係。MySQL 4.x 之後的版本,CHAR(n)表示能儲存多少字元數,實際能儲存多少字元數和字元集有關係。 CHAR(30),UTF-8字元集,最大長度90byte,儲存了30個漢字,位元組數應該是:90個位元組CHAR(30),UTF-8字元集,最大長度90byte,儲存了30個英文,位元組數應該是:30個位元組CHAR(30),GBK字元集,最大長度60byte 儲存了30個漢字,位元組數應該是:60個位元組CHAR(30),GBK字元集,最大長度60byte 儲存了30個英文,位元組數應該是:30個位元組CHAR(30),LATIN1字元集,最大長度30byte儲存了15個漢字,位元組數應該是:30個位元組CHAR(30),LATIN1字元集,最大長度30byte儲存了30個英文,位元組數應該是:30個位元組  三:如何轉換字元集latin1轉換到utf8gbk轉換到utf8lantin1轉換到gbklantin1字元集環境:LANG=en_US.ISO_8859    CRT:defaultgbk字元集環境:LANG=en_US.GBK/zh_CN.GBK    CRT:defaultutf8字元集環境:LANG=en_US.UTF-8    CRT:utf8 1.latin1 =>utf8以原來的字元集為latin1為例,升級成為utf8的字元集,原來的表:old_table(default charset=latin1),新表:new_table(defaul charset=utf8)。 第一步:匯出舊資料mysqldump --default-character-set=latin1 -hlocalhost -uroot -B my_db --tables old_table> old.sql 第二步:轉換編碼(unix/linux環境下)iconv -t utf8 -f gb2312 -c old.sql >new.sql或者去掉-f參數,讓iconv自動判斷原來的字元集iconv -t utf-8 -c old.sql >new.sql在這裡,假定原來的資料預設是gb2312編碼。 第三步:匯入修改new.sql,在插入/更新語句開始之前,增加一條SQL語句:SET NAMES utf8;  mysqldump -hlocalhost -uroot -B my_db < new.sql  2.gbk => utf8以原來的字元集為gbk為例,升級成為utf8字元集,原來的表old_table(default charset=gbk),新表:new_table(defalut charset=utf8) 第一步:匯出舊資料mysqldump --default-character-set=gbk -hlocalhost -uroot -B my_db --tables old_table> old.sql 第二步:轉換編碼(unix/linux環境下)iconv -t utf-8 -c old.sql >new.sql或者去掉-f參數,讓iconv自動判斷原來的字元集iconv -t utf-8 -c old.sql >new.sql在這裡,假定原來的資料預設是gb2312編碼。 第三步:匯入修改new.sql,在插入/更新語句開始之前,增加一條SQL語句:SET NAMES utf8;  mysqldump -hlocalhost -uroot my_db < new.sql  3.latin1 => gbk 以原來的字元集為gbk為例,升級成為utf8字元集,原來的表old_table(default charset=latin1),新表:new_table(defalut charset=utf8) 第一步:匯出舊資料mysqldump --default-character-set=latin1 -hlocalhost -uroot -B my_db --tables old_table> old.sql 第二步:匯入(省去了第二步轉換編碼工作)修改new.sql,在插入/更新語句開始之前,增加一條SQL語句:SET NAMES gbk;  mysqldump -hlocalhost -uroot my_db < new.sql  

 


How to support full Unicode in MySQL databases
https://mathiasbynens.be/notes/mysql-utf8mb4

10分鐘學會理解和解決MySQL亂碼問題
http://cenalulu.github.io/mysql/mysql-mojibake/

字元集GBK和UTF8的區別說明
http://blog.csdn.net/zzxian/article/details/7330804

mysql使用utf8mb4經驗吐血總結
https://mp.weixin.qq.com/s?__biz=MzAwMDU2ODU3MA==&mid=2247484084&idx=1&sn=e3740e1087dc73ffcdc4b56bfeaaaa6d&chksm=9ae7bf21ad9036370e8174995ff73775a0ff8c8a51b9995fc8675a994a768a136d187e2aa76d#rd


  

MySQL字元集小結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.