Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 27972|Atbildi: 0

[Avots] Atšķirība starp utf8 un utf8mb4 MySQL

[Kopēt saiti]
Publicēts 2021-4-21 18:01:22 | | | |
Nezināma rakstzīmju kopa: utf8mb4
https://www.itsvse.com/thread-3199-1-1.html
1. Ievads

MySQL pievienoja šo utf8mb4 kodējumu pēc 5.5.3, kas nozīmē lielāko daļu baitu 4, un tas ir īpaši izmantots, lai būtu saderīgs ar četru baitu unikodu. Par laimi, utf8mb4 ir utf8 virskopa, un nav nepieciešama nekāda cita konvertēšana, izņemot kodējuma maiņu uz utf8mb4. Protams, lai ietaupītu vietu, parasti pietiek ar utf8 izmantošanu.

2. Satura apraksts

Kā minēts iepriekš, tā kā utf8 var saglabāt lielāko daļu ķīniešu rakstzīmju, kāpēc izmantot utf8mb4? MySQL atbalstītā UTF8 kodējuma maksimālais rakstzīmju garums ir 3 baiti, un, ja saskaraties ar 4 baitu platu rakstzīmi, jūs ievietosiet izņēmumu. Maksimālā Unicode rakstzīme, ko kodē UTF-8 no trim baitiem, ir 0xffff, kas ir pamata daudzvalodu plakne (BMP) Unicode. Tas nozīmē, ka jebkuru Unicode rakstzīmi, kas nav pamata daudztekstu plaknē, nevar saglabāt, izmantojot MySQL utf8 rakstzīmju kopu. Tie ietver emocijzīmes (Emoji ir īpašs Unicode kodējums, kas parasti atrodams iOS un Android tālruņos) un daudzas neparasti izmantotas ķīniešu rakstzīmes, kā arī visas jaunās Unicode rakstzīmes un daudz ko citu.

3. Problēmas pamatcēlonis

Oriģinālais UTF-8 formāts izmantoja vienu līdz sešus baitus un varēja kodēt līdz 31 rakstzīmei. Jaunākā UTF-8 specifikācija izmanto tikai vienu līdz četrus baitus un var kodēt līdz 21 bitam, kas ir tieši tas, kas pārstāv visas 17 Unicode plaknes. utf8 ir rakstzīmju kopa Mysql, kas atbalsta tikai UTF-8 rakstzīmes līdz trim baitiem, kas ir pamata daudztekstu plakne Unicode.

Kāpēc UTF8 MySQL atbalsta tikai UTF-8 rakstzīmes ar ne vairāk kā trim baitiem? Es par to domāju, varbūt tāpēc, ka tad, kad MySQL pirmo reizi tika izstrādāts, Unicode nebija palīgplaknes. Tajā laikā Unicode komiteja vēl sapņoja par "65 535 rakstzīmēm pietiek visai pasaulei". Virknes garums Mysql skaita rakstzīmes, nevis baitus, un CHAR datu tipiem virknēm jābūt pietiekami garām. Izmantojot utf8 rakstzīmju kopu, saglabājamais garums ir utf8 garākais rakstzīmju garums, kas reizināts ar virknes garumu, tāpēc ir dabiski ierobežot maksimālo utf8 garumu līdz 3, piemēram, CHAR(100) Mysql saglabās 300 baitus. Kas attiecas uz to, kāpēc nākamās versijas neatbalsta 4 baitu UTF-8 rakstzīmes, es domāju, ka viena ir atpakaļsaderības apsvērumu dēļ, bet otra ir tā, ka rakstzīmes ārpus pamata daudzvalodu plaknes tiek izmantotas reti.

Lai saglabātu 4 baitu UTF-8 rakstzīmes Mysql, ir nepieciešama utf8mb4 rakstzīmju kopa, bet tā tiek atbalstīta tikai pēc versijas 5.5.3 (skatīt versiju: select version(); )。 Es domāju, ka labākai saderībai vienmēr vajadzētu izmantot utf8mb4, nevis utf8.  CHAR tipa datiem utf8mb4 patērē vairāk vietas, un saskaņā ar oficiālo Mysql ieteikumu izmantojiet CARCHAR, nevis CHAR.







Iepriekšējo:Vienkārša ORM ietvara izmantošana SqlSugar
Nākamo:HTTP pieprasījuma galvene Expect ir detalizēti izskaidrota
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com