Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 27972|Vastaus: 0

[Lähde] Ero utf8:n ja utf8mb4:n välillä MySQL:ssä

[Kopioi linkki]
Julkaistu 2021-4-21 klo 18:01:22 | | | |
Tuntematon merkistö: utf8mb4
https://www.itsvse.com/thread-3199-1-1.html
1. Johdanto

MySQL lisäsi tämän utf8mb4-koodauksen version 5.5.3 jälkeen, mikä tarkoittaa useimpia tavuja 4, ja sitä käytetään erityisesti yhteensopivuuteen neljän tavun unicode-kanssa. Onneksi utf8mb4 on utf8:n yläjoukko, eikä muuta muunnosta tarvita kuin koodauksen muuttaminen utf8mb4:ään. Tietenkin tilan säästämiseksi riittää yleensä käyttää utf8:aa.

2. Sisällön kuvaus

Kuten edellä mainittiin, koska utf8 voi tallentaa suurimman osan kiinalaisista merkeistä, miksi käyttää utf8mb4:ää? MySQL:n tukeman UTF8-koodauksen maksimimerkkipituus on 3 tavua, ja jos kohtaat leveän 4 tavun merkin, lisäät poikkeuksen. UTF-8:n kolmen tavun maksimiUnicode-merkki on 0xffff, mikä on Unicoden perusmonikielinen taso (BMP). Toisin sanoen mitään Unicode-merkkiä, joka ei ole perusmonitekstitasolla, ei voi tallentaa Mysql:n utf8-merkistöllä. Näihin kuuluvat emojit (Emoji on erityinen Unicode-koodaus, jota käytetään yleisesti iOS- ja Android-puhelimissa) sekä monet harvinaisesti käytetyt kiinalaiset merkit sekä uudet Unicode-merkit ja paljon muuta.

3. Ongelman juurisyy

Alkuperäinen UTF-8-formaatti käytti yhdestä kuuteen tavua ja pystyi koodaamaan jopa 31 merkkiä. Uusin UTF-8-määrittely käyttää vain yhdestä neljään tavua ja voi koodata jopa 21 bittiä, mikä edustaa kaikkia 17 Unicode-tasoa. utf8 on Mysql:n merkistö, joka tukee vain enintään kolmen tavun pituisia UTF-8-merkkejä, mikä on Unicode-pelin perusmonitekstitaso.

Miksi UTF8 Mysql:ssä tukee vain UTF-8-merkkejä, joissa on enintään kolme tavua? Ajattelin asiaa, ehkä siksi, että kun Mysql kehitettiin, Unicodella ei ollut aputasoa. Tuolloin Unicode-komitea vielä haaveili "65 535 merkkiä riittää koko maailmalle". Mysql:n merkkijonojen pituudet laskevat merkkejä tavujen sijaan, ja CHAR-tietotyypeille merkkijonojen täytyy olla riittävän pitkiä. Kun käytetään utf8-merkistöä, säilytettävä pituus on utf8:n pisin merkkimerkin pituus kerrottuna merkkijonon pituudella, joten on luonnollista rajoittaa maksimiutf8-pituus 3:een, esimerkiksi CHAR(100) Mysql säilyttää 300 tavua. Mitä tulee siihen, miksi myöhemmät versiot eivät tue 4-tavuisia UTF-8-merkkejä, luulen, että toinen johtuu taaksepäin yhteensopivuudesta, ja toinen on se, että perusmonikielisen tason ulkopuolisia merkkejä käytetään harvoin.

4-tavuisten UTF-8-merkkien tallentamiseksi Mysql:ssä tarvitaan utf8mb4-merkkijoukko, mutta sitä tuetaan vasta version 5.5.3 jälkeen (katso versio: valitse versio(); )。 Mielestäni paremman yhteensopivuuden vuoksi kannattaa aina käyttää utf8mb4:ää utf8:n sijaan.  CHAR-tyyppidatalle utf8mb4 vie enemmän tilaa, ja virallisen Mysql-suosituksen mukaan käytä VARCHARia CHAR:n sijaan.







Edellinen:ORM-kehyksen SqlSugar yksinkertainen käyttö
Seuraava:HTTP-pyyntöotsikko Expect selitetään yksityiskohtaisesti
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com