登录
首页 >  数据库 >  MySQL

鐭ヤ箮闈㈣瘯瀹橈細涓轰粈涔堜笉寤鸿鍦?MySQL 涓娇鐢?UTF-8锛?/a>

来源:SegmentFault

时间:2023-02-16 15:45:03 190浏览 收藏

小伙伴们有没有觉得学习数据库很有意思?有意思就对了!今天就给大家带来《鐭ヤ箮闈㈣瘯瀹橈細涓轰粈涔堜笉寤鸿鍦?MySQL 涓娇鐢?UTF-8锛?/a>》,以下内容将会涉及到MySQL、utf-8,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!

娆㈣繋寰俊鎼滅储鍏紬鍙枫€恓ava鐗坵eb椤圭洰銆戣幏鍙栬祫婧愶細java瀛︿範瑙嗛/璁捐妯″紡绗旇/绠楁硶鎵嬪唽/java椤圭洰

璁板緱鍘诲勾鎴戝湪寰€MySQL瀛樺叆emoji琛ㄦ儏馃槻馃槼鏃讹紝涓€鐩村嚭閿欙紝鏃犳硶瀵煎叆銆傚悗鏉ユ壘鍒板姙娉?-- 閫氳繃鎶妘tf8鏀规垚utf8mb4灏卞彲浠ヤ簡锛屽苟娌℃湁娣辩┒銆?p>涓€骞村悗锛屾垜鐪嬪埌涓€绡囨枃绔犺鍒癳moji鏂囧瓧鍗?涓瓧鑺傦紝閫氬父瑕佺敤utf-8鍘绘帴鏀舵墠琛岋紝鍏朵粬缂栫爜鍙兘浼氬嚭閿欍€傛垜绐佺劧鎯冲埌鍘诲勾鎿嶄綔MySQL鎶妘tf8鏀规垚utf8mb4鐨勪簨鍎裤€?/p>

鍡紵浠栨湰韬笉灏辨槸utf8缂栫爜涔堬紒閭f垜褰撴椂杩樻敼涓敜瀛愶紵

闅鹃亾锛孧ySQL鐨剈tf8涓嶆槸鐪熸鐨刄TF-8缂栫爜鍚楋紵锛? 鍗фЫ杩欍€傘€侻ySQL鏈塨ug锛?/p>

甯︾潃鐤戦棶鏌ヨ浜嗗緢澶氱浉鍏虫潗鏂欙紝鎵嶅彂鐜拌繖绔熺劧鏄疢ySQL鐨勪竴涓巻鍙查仐鐣欓棶棰榽~ 鎴戠瑧浜嗭紝娌℃兂鍒拌繖涔堢墰B鐨凪ySQL涔熶細鏈夎繖娈靛線浜嬨€?/p>

涓€銆佹姤閿欏洖椤?/h2>

灏唀moji鏂囧瓧鐩存帴鍐欏叆SQL涓紝鎵цinsert璇彞鎶ラ敊锛?/p>

INSERT INTO `csjdemo`.`student` (`ID`, `NAME`, `SEX`, `AGE`, `CLASS`, `GRADE`, `HOBBY`) 
   VALUES ('20', '闄堝搱鍝堭煒?, '鐢?, '20', '181鐝?, '9骞寸骇', '鐪嬬墖鍎?);
*[Err] 1366 - Incorrect string value: '\xF0\x9F\x98\x93' for column 'NAME' at row 1*

鏀逛簡鏁版嵁搴撶紪鐮併€佺郴缁熺紪鐮佷互鍙婅〃瀛楁鐨勭紪鐮佹牸寮?鈫?*utf8mb4* 涔嬪悗锛屽氨鍙互浜嗭細

INSERT INTO `student` (`ID`, `NAME`, `SEX`, `AGE`, `CLASS`, `GRADE`, `HOBBY`) 
   VALUES (null, '闄堝搱鍝堭煒擆煒?, '鐢?, '20', '181鐝?, '9骞寸骇', '鐪嬬墖鍎?);

image.png

浜屻€丮ySQL涓璾tf8鐨勮叮浜?/h2>

MySQL 鐨勨€渦tf8鈥濆疄闄呬笂涓嶆槸鐪熸鐨?UTF-8銆?/strong>

鍦∕ySQL涓紝鈥渦tf8鈥濈紪鐮佸彧鏀寔姣忎釜瀛楃鏈€澶氫笁涓瓧鑺傦紝鑰岀湡姝g殑 UTF-8 鏄瘡涓瓧绗︽渶澶氬洓涓瓧鑺傘€?/strong>

鍦╱tf8缂栫爜涓紝涓枃鏄崰3涓瓧鑺傦紝鍏朵粬鏁板瓧銆佽嫳鏂囥€佺鍙峰崰涓€涓瓧鑺傘€?/p>

浣唀moji绗﹀彿鍗?涓瓧鑺傦紝涓€浜涜緝澶嶆潅鐨勬枃瀛椼€佺箒浣撳瓧涔熸槸4涓瓧鑺傘€傛墍浠ュ鑷村啓鍏ュけ璐ワ紝搴旇鏀规垚utf8mb4銆?/strong>

image.png

濡備笂鍥句腑鎵€绀猴紝杩欐槸缂栫爜鏀规垚utf8mb4鍚庡叆搴撶殑鏁版嵁锛屽ぇ瀹跺彲浠ユ竻鏅扮殑瀵规瘮涓€涓嬫墍鍗犵殑瀛楃鏁般€佸瓧鑺傛暟銆傛鍥犲姝わ紝4瀛楄妭鐨勫唴瀹瑰線utf8缂栫爜涓彃鍏ワ紝鑲畾鏄笉琛岀殑锛屾彃涓嶈繘鍘诲晩锛屾槸鍚э紙澶ф綐鎽婃墜锛夈€?br>

image.png

MySQL 涓€鐩存病鏈変慨澶嶈繖涓?bug锛屼粬浠湪 2010 骞村彂甯冧簡涓€涓彨浣溾€渦tf8mb4鈥濈殑瀛楃闆嗭紝宸у鐨勭粫杩囦簡杩欎釜闂銆?/p>

褰撶劧锛屼粬浠苟娌℃湁瀵规柊鐨勫瓧绗﹂泦骞胯€屽憡涔嬶紙鍙兘鏄洜涓鸿繖涓?bug 璁╀粬浠寰楀緢灏村艾锛夛紝浠ヨ嚧浜庣幇鍦ㄧ綉缁滀笂浠嶇劧鍦ㄥ缓璁紑鍙戣€呬娇鐢ㄢ€渦tf8鈥濓紝浣嗚繖浜涘缓璁兘鏄敊璇殑銆?/p>

1. utf8mb4 鎵嶆槸鐪熸鐨刄TF-8

鏄殑锛孧ySQL 鐨勨€渦tf8mb4鈥濇墠鏄湡姝g殑鈥淯TF-8鈥濄€?/strong>

MySQL 鐨勨€渦tf8鈥濇槸涓€绉嶁€滀笓灞炵殑缂栫爜鈥濓紝瀹冭兘澶熺紪鐮佺殑 Unicode 瀛楃骞朵笉澶氥€?/p>

鍦ㄨ繖閲孧ark涓€涓嬶細鎵€鏈夊湪浣跨敤鈥渦tf8鈥濈殑 MySQL 鍜?MariaDB 鐢ㄦ埛閮藉簲璇ユ敼鐢ㄢ€渦tf8mb4鈥濓紝姘歌繙閮戒笉瑕佸啀浣跨敤鈥渦tf8鈥濄€?br>

image.png

閭d箞浠€涔堟槸缂栫爜锛熶粈涔堟槸 UTF-8锛?/p>

鎴戜滑閮界煡閬擄紝璁$畻鏈轰娇鐢?0 鍜?1 鏉ュ瓨鍌ㄦ枃鏈€傛瘮濡傚瓧绗︹€淐鈥濊瀛樻垚鈥?1000011鈥濓紝閭d箞璁$畻鏈哄湪鏄剧ず杩欎釜瀛楃鏃堕渶瑕佺粡杩囦袱涓楠わ細

  1. 璁$畻鏈鸿鍙栤€?1000011鈥濓紝寰楀埌鏁板瓧 67锛屽洜涓?67 琚紪鐮佹垚鈥?1000011鈥濄€?/li>
  2. 璁$畻鏈哄湪 Unicode 瀛楃闆嗕腑鏌ユ壘 67锛屾壘鍒颁簡鈥淐鈥濄€?/li>

鍚屾牱鐨勶細

  1. 鎴戠殑鐢佃剳灏嗏€淐鈥濇槧灏勬垚 Unicode 瀛楃闆嗕腑鐨?67銆?/li>
  2. 鎴戠殑鐢佃剳灏?67 缂栫爜鎴愨€?1000011鈥濓紝骞跺彂閫佺粰 Web 鏈嶅姟鍣ㄣ€?/li>

鍑犱箮鎵€鏈夌殑缃戠粶搴旂敤閮戒娇鐢ㄤ簡 Unicode 瀛楃闆嗭紝鍥犱负娌℃湁鐞嗙敱浣跨敤鍏朵粬瀛楃闆嗐€?/p>

Unicode 瀛楃闆嗗寘鍚簡涓婄櫨涓囦釜瀛楃銆傛渶绠€鍗曠殑缂栫爜鏄?UTF-32锛屾瘡涓瓧绗︿娇鐢?32 浣嶃€傝繖鏍峰仛鏈€绠€鍗曪紝鍥犱负涓€鐩翠互鏉ワ紝璁$畻鏈哄皢 32 浣嶈涓烘暟瀛楋紝鑰岃绠楁満鏈€鍦ㄨ鐨勫氨鏄鐞嗘暟瀛椼€備絾闂鏄紝杩欐牱澶氮璐圭┖闂翠簡銆?/p>

UTF-8 鍙互鑺傜渷绌洪棿锛屽湪 UTF-8 涓紝瀛楃鈥淐鈥濆彧闇€瑕?8 浣嶏紝涓€浜涗笉甯哥敤鐨勫瓧绗︼紝姣斿鈥滒煒撯€濋渶瑕?32 浣嶃€傚叾浠栫殑瀛楃鍙兘浣跨敤 16 浣嶆垨 24 浣嶃€備竴绡囩被浼兼湰鏂囪繖鏍风殑鏂囩珷锛屽鏋滀娇鐢?UTF-8 缂栫爜锛屽崰鐢ㄧ殑绌洪棿鍙湁 UTF-32 鐨勫洓鍒嗕箣涓€宸﹀彸銆?/p>

2. utf8 鐨勭畝鍙?/h3>

涓轰粈涔?MySQL 寮€鍙戣€呬細璁┾€渦tf8鈥濆け鏁堬紵鎴戜滑鎴栬鍙互浠嶮ySQL鐗堟湰鎻愪氦鏃ュ織涓鎵剧瓟妗堛€?/p>

MySQL 浠?4.1 鐗堟湰寮€濮嬫敮鎸?UTF-8锛屼篃灏辨槸 2003 骞达紝鑰屼粖澶╀娇鐢ㄧ殑 UTF-8 鏍囧噯锛圧FC 3629锛夋槸闅忓悗鎵嶅嚭鐜扮殑銆?/p>

鏃х増鐨?UTF-8 鏍囧噯锛圧FC 2279锛夋渶澶氭敮鎸佹瘡涓瓧绗?6 涓瓧鑺傘€?002 骞?3 鏈?28 鏃ワ紝MySQL 寮€鍙戣€呭湪绗竴涓?MySQL 4.1 棰勮鐗堜腑浣跨敤浜?RFC 2279銆?/p>

鍚屽勾 9 鏈堬紝浠栦滑瀵?MySQL 婧愪唬鐮佽繘琛屼簡涓€娆¤皟鏁达細鈥淯TF8 鐜板湪鏈€澶氬彧鏀寔 3 涓瓧鑺傜殑搴忓垪鈥濄€?/p>

鏄皝鎻愪氦浜嗚繖浜涗唬鐮侊紵浠栦负浠€涔堣杩欐牱鍋氾紵杩欎釜闂涓嶅緱鑰岀煡銆傚湪杩佺Щ鍒?Git 鍚庯紙MySQL 鏈€寮€濮嬩娇鐢ㄧ殑鏄?BitKeeper锛夛紝MySQL 浠g爜搴撲腑鐨勫緢澶氭彁浜よ€呯殑鍚嶅瓧閮戒涪澶变簡銆?003 骞?9 鏈堢殑閭欢鍒楄〃涓篃鎵句笉鍒板彲浠ヨВ閲婅繖涓€鍙樻洿鐨勭嚎绱€?/p>

涓嶈繃鎴戜滑鍙互璇曠潃鐚滄祴涓€涓嬶細

2002骞达紝MySQL鍋氬嚭浜嗕竴涓喅瀹氾細濡傛灉鐢ㄦ埛鍙互淇濊瘉鏁版嵁琛ㄧ殑姣忎竴琛岄兘浣跨敤鐩稿悓鐨勫瓧鑺傛暟锛岄偅涔?MySQL 灏卞彲浠ュ湪鎬ц兘鏂归潰鏉ヤ竴涓ぇ鎻愬崌銆備负姝わ紝鐢ㄦ埛闇€瑕佸皢鏂囨湰鍒楀畾涔変负鈥淐HAR鈥濓紝姣忎釜鈥淐HAR鈥濆垪鎬绘槸鎷ユ湁鐩稿悓鏁伴噺鐨勫瓧绗︺€傚鏋滄彃鍏ョ殑瀛楃灏戜簬瀹氫箟鐨勬暟閲忥紝MySQL 灏变細鍦ㄥ悗闈㈠~鍏呯┖鏍硷紝濡傛灉鎻掑叆鐨勫瓧绗﹁秴杩囦簡瀹氫箟鐨勬暟閲忥紝鍚庨潰瓒呭嚭閮ㄥ垎浼氳鎴柇銆?/p>

MySQL 寮€鍙戣€呭湪鏈€寮€濮嬪皾璇?UTF-8 鏃朵娇鐢ㄤ簡姣忎釜瀛楃6涓瓧鑺傦紝CHAR(1) 浣跨敤6涓瓧鑺傦紝CHAR(2)浣跨敤12涓瓧鑺傦紝骞朵互姝ょ被鎺ㄣ€?/p>

搴旇璇达紝浠栦滑鏈€鍒濈殑琛屼负鎵嶆槸姝g‘鐨勶紝鍙儨杩欎竴鐗堟湰涓€鐩存病鏈夊彂甯冦€備絾鏄枃妗d笂鍗磋繖涔堝啓浜嗭紝鑰屼笖骞夸负娴佷紶锛屾墍鏈変簡瑙?UTF-8 鐨勪汉閮借鍚屾枃妗i噷鍐欑殑涓滆タ銆?/p>

image.png

涓嶈繃寰堟樉鐒讹紝MySQL 寮€鍙戣€呮垨鍘傚晢鎷呭績浼氭湁鐢ㄦ埛鍋氳繖涓や欢浜嬶細

  • 浣跨敤 CHAR 瀹氫箟鍒楋紙鍦ㄧ幇鍦ㄧ湅鏉ワ紝CHAR 宸茬粡鏄€佸彜钁d簡锛屼絾鍦ㄩ偅鏃讹紝鍦?MySQL 涓娇鐢?CHAR 浼氭洿蹇紝涓嶈繃浠?2005 骞翠互鍚庡氨涓嶆槸杩欐牱瀛愪簡锛夈€?/li>
  • 灏?CHAR 鍒楃殑缂栫爜璁剧疆涓衡€渦tf8鈥濄€?/li>

鎴戠殑鐚滄祴鏄?MySQL 寮€鍙戣€呮湰鏉ユ兂甯姪閭d簺甯屾湜鍦ㄧ┖闂村拰閫熷害涓婂弻璧㈢殑鐢ㄦ埛锛屼絾浠栦滑鎼炵牳浜嗏€渦tf8鈥濈紪鐮併€?/p>

鎵€浠ョ粨鏋滃氨鏄病鏈夎耽瀹躲€傞偅浜涘笇鏈涘湪绌洪棿鍜岄€熷害涓婂弻璧㈢殑鐢ㄦ埛锛屽綋浠栦滑鍦ㄤ娇鐢ㄢ€渦tf8鈥濈殑 CHAR 鍒楁椂锛屽疄闄呬笂浣跨敤鐨勭┖闂存瘮棰勬湡鐨勬洿澶э紝閫熷害涔熸瘮棰勬湡鐨勬參銆傝€屾兂瑕佹纭€х殑鐢ㄦ埛锛屽綋浠栦滑浣跨敤鈥渦tf8鈥濈紪鐮佹椂锛屽嵈鏃犳硶淇濆瓨鍍忊€滒煒撯€濊繖鏍风殑瀛楃锛屽洜涓衡€滒煒撯€濇槸4涓瓧鑺傜殑銆?/p>

鍦ㄨ繖涓笉鍚堟硶鐨勫瓧绗﹂泦鍙戝竷浜嗕箣鍚庯紝MySQL 灏辨棤娉曚慨澶嶅畠锛屽洜涓鸿繖鏍烽渶瑕佽姹傛墍鏈夌敤鎴烽噸鏂版瀯寤轰粬浠殑鏁版嵁搴撱€傛渶缁堬紝MySQL 鍦?2010 骞撮噸鏂板彂甯冧簡鈥渦tf8mb4鈥濇潵鏀寔鐪熸鐨?UTF-8銆?/p>

涓夈€佹€荤粨

涓昏鏄洰鍓嶇綉缁滀笂鍑犱箮鎵€鏈夌殑鏂囩珷閮芥妸 鈥渦tf8鈥?褰撴垚鏄湡姝g殑 UTF-8锛屽寘鎷箣鍓嶆垜鍐欑殑鏂囩珷浠ュ強鍋氱殑椤圭洰锛堟崅鑴革級锛涘洜姝ゅ笇鏈涙洿澶氱殑鏈嬪弸鑳藉鐪嬪埌杩欑瘒鏂囩珷銆?/p>

鐩镐俊杩樻湁寰堝璺熸垜鍦ㄥ悓涓€鏉¤埞涓婄殑浜猴紝杩欐槸蹇呯劧鐨勩€?/p>

鎵€浠ワ紝澶у浠ュ悗鍐嶆惌寤篗ySQL銆丮ariaDB鏁版嵁搴撴椂锛岃寰楀皢鏁版嵁搴撶浉搴旂紪鐮侀兘鏀逛负utf8mb4銆?/strong>缁堟湁涓€澶╋紝鎺ヤ綘鐝効鐨勭▼搴忓憳鍙戞垨浣犵殑棰嗗鐜拌繖涓棶棰樺悗锛屼竴瀹氫細鍦ㄥ績閲岄粯榛樻劅鍒颁綘鐨勬妧鏈墰B銆?/p>

浣滆€咃細_闄堝搱鍝?br>鏉ユ簮https://blog.csdn.net/qq_3939...

杩戞湡鐑枃鎺ㄨ崘锛?/strong>
SpringCloud寰湇鍔$數鍟嗛」鐩暀绋?/a>

好了,本文到此结束,带大家了解了《鐭ヤ箮闈㈣瘯瀹橈細涓轰粈涔堜笉寤鸿鍦?MySQL 涓娇鐢?UTF-8锛?/a>》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多数据库知识!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>