Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 27972|Απάντηση: 0

[Πηγή] Η διαφορά μεταξύ utf8 και utf8mb4 στη MySQL

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 2021-4-21 18:01:22 | | | |
Άγνωστο σύνολο χαρακτήρων: utf8mb4
https://www.itsvse.com/thread-3199-1-1.html
1. Εισαγωγή

Η MySQL πρόσθεσε αυτήν την κωδικοποίηση utf8mb4 μετά την 5.5.3, που σημαίνει τα περισσότερα byte 4, και χρησιμοποιείται ειδικά για να είναι συμβατή με unicode τεσσάρων byte. Ευτυχώς, το utf8mb4 είναι ένα υπερσύνολο του utf8 και δεν απαιτείται άλλη μετατροπή εκτός από την αλλαγή της κωδικοποίησης σε utf8mb4. Φυσικά, για να εξοικονομήσετε χώρο, αρκεί γενικά να χρησιμοποιήσετε το utf8.

2. Περιγραφή περιεχομένου

Όπως αναφέρθηκε παραπάνω, αφού το utf8 μπορεί να αποθηκεύσει τους περισσότερους κινεζικούς χαρακτήρες, γιατί να χρησιμοποιήσετε το utf8mb4; Το μέγιστο μήκος χαρακτήρων της κωδικοποίησης UTF8 που υποστηρίζεται από τη MySQL είναι 3 byte και αν συναντήσετε έναν ευρύ χαρακτήρα 4 byte, θα εισαγάγετε μια εξαίρεση. Ο μέγιστος χαρακτήρας Unicode που κωδικοποιείται από UTF-8 των τριών byte είναι 0xffff, το οποίο είναι το βασικό πολύγλωσσο επίπεδο (BMP) στο Unicode. Δηλαδή, οποιοσδήποτε χαρακτήρας Unicode που δεν βρίσκεται στο βασικό επίπεδο πολλαπλών κειμένων δεν μπορεί να αποθηκευτεί χρησιμοποιώντας το σύνολο χαρακτήρων utf8 της Mysql. Αυτά περιλαμβάνουν emoji (το Emoji είναι μια ειδική κωδικοποίηση Unicode που βρίσκεται συνήθως σε τηλέφωνα iOS και Android) και πολλούς κινεζικούς χαρακτήρες που χρησιμοποιούνται ασυνήθιστα, καθώς και τυχόν νέους χαρακτήρες Unicode και πολλά άλλα.

3. Η βασική αιτία του προβλήματος

Η αρχική μορφή UTF-8 χρησιμοποιούσε ένα έως έξι byte και μπορούσε να κωδικοποιήσει έως και 31 χαρακτήρες. Η τελευταία προδιαγραφή UTF-8 χρησιμοποιεί μόνο ένα έως τέσσερα byte και μπορεί να κωδικοποιήσει έως και 21 bit, που είναι ακριβώς αυτό που αντιπροσωπεύει και τα 17 επίπεδα Unicode. Το utf8 είναι ένα σύνολο χαρακτήρων στη Mysql που υποστηρίζει μόνο χαρακτήρες UTF-8 μήκους έως τριών byte, που είναι το βασικό επίπεδο πολλαπλών κειμένων στο Unicode.

Γιατί το UTF8 στη Mysql υποστηρίζει μόνο χαρακτήρες UTF-8 με μέγιστο αριθμό τριών byte; Το σκέφτηκα, ίσως επειδή όταν αναπτύχθηκε για πρώτη φορά η Mysql, το Unicode δεν είχε βοηθητικό επίπεδο. Εκείνη την εποχή, η Επιτροπή Unicode εξακολουθούσε να ονειρεύεται «65.535 χαρακτήρες είναι αρκετοί για όλο τον κόσμο». Τα μήκη συμβολοσειρών στη Mysql μετρούν χαρακτήρες αντί για byte και για τύπους δεδομένων CHAR, οι συμβολοσειρές πρέπει να είναι αρκετά μεγάλες. Όταν χρησιμοποιείτε το σύνολο χαρακτήρων utf8, το μήκος που πρέπει να διατηρηθεί είναι το μεγαλύτερο μήκος χαρακτήρων utf8 πολλαπλασιασμένο με το μήκος συμβολοσειράς, επομένως είναι φυσικό να περιορίσετε το μέγιστο μήκος utf8 σε 3, για παράδειγμα, η CHAR(100) Mysql θα διατηρήσει 300 byte. Όσο για το γιατί οι επόμενες εκδόσεις δεν υποστηρίζουν χαρακτήρες UTF-4 8 byte, νομίζω ότι το ένα είναι για λόγους συμβατότητας προς τα πίσω και το άλλο είναι ότι σπάνια χρησιμοποιούνται χαρακτήρες εκτός του βασικού πολύγλωσσου επιπέδου.

Για να αποθηκεύσετε χαρακτήρες UTF-4 8 byte στη Mysql, απαιτείται το σύνολο χαρακτήρων utf8mb4, αλλά υποστηρίζεται μόνο μετά την έκδοση 5.5.3 (δείτε την έκδοση: select version(); )。 Νομίζω ότι για καλύτερη συμβατότητα, θα πρέπει πάντα να χρησιμοποιείτε utf8mb4 αντί για utf8.  Για δεδομένα τύπου CHAR, το utf8mb4 καταναλώνει περισσότερο χώρο και σύμφωνα με την επίσημη σύσταση της Mysql, χρησιμοποιήστε VARCHAR αντί για CHAR.







Προηγούμενος:Απλή χρήση του πλαισίου ORM SqlSugar
Επόμενος:Η κεφαλίδα αιτήματος HTTP Expect εξηγείται λεπτομερώς
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com