Maison  >  Article  >  base de données  >  Quel type MySQL utilise-t-il pour les caractères chinois ?

Quel type MySQL utilise-t-il pour les caractères chinois ?

青灯夜游
青灯夜游original
2023-02-09 13:59:104546parcourir

Dans MySQL, les caractères chinois peuvent utiliser les types CHAR et VARCHAR. La longueur déclarée pour les types CHAR et VARCHAR représente le nombre maximum de caractères que l'utilisateur souhaite enregistrer. "CHAR(M)" est une chaîne de longueur fixe et la longueur de la colonne de chaîne est spécifiée lors de la définition ; M représente la longueur de la colonne, allant de "0 à 255" caractères. "VARCHAR(M)" est une chaîne de longueur variable, M représente la longueur de la colonne maximale et la plage est "0~65535".

Quel type MySQL utilise-t-il pour les caractères chinois ?

L'environnement d'exploitation de ce tutoriel : système windows7, version mysql8, ordinateur Dell G3.

mysql définit le type de stockage des caractères chinois

Le manuel mysql dit :

Dans la version MySQL 5.x, la longueur de la déclaration de type CHAR et VARCHAR indique le nombre maximum de caractères que vous souhaitez enregistrer. Par exemple, CHAR(30) peut occuper 30 caractères. Dans le cas du code interne GBK, un caractère chinois occupe deux octets, mais dans le cas du code interne UTF-8, un caractère chinois occupe trois octets.

Que sont les personnages ?

L'Encyclopédie Baidu dit :

Les caractères font référence aux lettres, chiffres, mots et symboles utilisés dans les ordinateurs, notamment : 1, 2, 3, A, B, C, ~ ! ·#¥%……——*()——+etc. Le stockage d'un caractère chinois nécessite 2 octets, le stockage d'un caractère anglais nécessite 1 octet et 2 chiffres font un octet. Par exemple, lors de la recherche de la longueur d'une chaîne en VB, len(str(1234))=4, len(1234)=2.

Les personnages sont des entités abstraites qui peuvent être représentées à l'aide de nombreux schémas de caractères ou pages de codes différents. Par exemple, le codage Unicode UTF-16 représente les caractères sous la forme d'une séquence d'entiers de 16 bits, tandis que le codage Unicode UTF-8 représente les mêmes caractères sous la forme d'une séquence d'octets de 8 bits. Le Common Language Runtime utilise Unicode UTF-16 (Unicode Transformation Format, un codage 16 bits) pour représenter les caractères.

Les applications ciblant le Common Language Runtime utilisent des encodages pour mapper les formes de table de caractères du schéma de caractères natif à d'autres schémas. Les applications utilisent le décodage pour mapper les caractères des schémas non natifs aux schémas natifs. ​

Les ordinateurs et les équipements de communication utilisent le codage de caractères pour exprimer les caractères. Cela signifie qu'un personnage est affecté à quelque chose. Traditionnellement, il représente un nombre entier de séquences de bits, de sorte qu'il puisse être transmis via le réseau et soit également facile à stocker. Deux exemples couramment utilisés sont ASCII et UTF-8 pour Unicode. Selon les statistiques de Google, UTF-8 est actuellement la méthode d'encodage la plus utilisée pour les pages Web. [1] Comparé à la plupart des codages de caractères qui mappent les caractères sur des nombres ou des chaînes de bits, le code Morse utilise une séquence d'impulsions électroniques de longueur variable pour représenter les caractères.

Que sont les octets ?

Byte, le nom anglais est Byte. Octet est l'abréviation de terme binaire. Un octet représente huit bits. Il est couramment utilisé comme unité de mesure pour les informations informatiques, quel que soit le type de données stockées. C'est également un type de données de base indispensable dans les langages de programmation entiers.

Byte (byte) peut être abrégé en B, par exemple, MB signifie Megabyte ; Bit (bit) peut être abrégé en b, par exemple, Mb signifie Megabit.

Donc si on veut définir un champ pouvant stocker jusqu'à 10 caractères chinois, comment doit-on le définir ?

Avec l'explication ci-dessus, cela devrait être clair à propos de char(10) ou varchar(10). Vérifions :

CREATE TABLE `t1` (
  `str` varchar(10) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Insérez les données suivantes dans le tableau :

insert  into `t1`(`str`) values ('一二三四五六七八九十');
insert  into `t1`(`str`) values ('一二三四五六七八九十十一');
insert  into `t1`(`str`) values ('abcdefghijklmnopqrst');
insert  into `t1`(`str`) values ('1234567890123456');

Vérifions les résultats :

Cela peut confirmer ce qui est dit ci-dessus, et s'il dépasse la plage définie, mysql sera automatiquement tronqué, nous devrions y prêter attention dans les applications pratiques.

Les types CHAR et VARCHAR

CHAR(M) sont des chaînes de longueur fixe et la longueur de la colonne de chaîne est spécifiée lors de la définition. Une fois enregistré, remplit les espaces à droite jusqu'à la longueur spécifiée. M représente la longueur de la colonne, allant de 0 à 255 caractères.

Par exemple, CHAR(4) définit une colonne de chaîne de longueur fixe contenant un maximum de 4 caractères. Lorsqu'une valeur CHAR est récupérée, les espaces de fin sont supprimés.

VARCHAR(M) est une chaîne de longueur variable, M représente la longueur de la colonne maximale et la plage de M est de 0 à 65535. La longueur réelle maximale d'un VARCHAR est déterminée par la taille de la ligne la plus longue et le jeu de caractères utilisé, tandis que l'espace réel occupé est la longueur réelle de la chaîne plus un.

Par exemple, VARCHAR(50) définit une chaîne d'une longueur maximale de 50. Si la chaîne insérée ne contient que 10 caractères, la chaîne réellement stockée sera de 10 caractères et un caractère de fin de chaîne. Les espaces de fin VARCHAR sont conservés lorsque les valeurs sont enregistrées et récupérées.

【Exemple】Ce qui suit enregistre différentes chaînes dans les colonnes CHAR(4) et VARCHAR(4) pour illustrer la différence entre CHAR et VARCHAR, comme indiqué dans le tableau suivant.

[ Recommandations associées :
Insérer une valeur CHAR(4) Exigences de stockage VARCHAR(4) Exigences de stockage
' ' ' ' 4 octets '' Section 1 mot
'ab' 'ab ' 4 octets 'ab' 3 octets
'abc' ' abc ' 4 octets 'abc' 4 octets
'abcd' ' abcd' 4 octets ' abcd' 5 octets
'abcdef ' 'abcd' 4 octets ' 5 octets
tutoriel vidéo mysql

]

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn