Maison  >  Article  >  base de données  >  Qu'est-ce que le jeu de caractères MySQL ?

Qu'est-ce que le jeu de caractères MySQL ?

青灯夜游
青灯夜游avant
2018-10-17 17:28:024979parcourir

Cet article vous explique ce qu'est le jeu de caractères MySQL ? Une introduction connexe au jeu de caractères. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.

Présentation du jeu de caractères

  • gbk/gb2312

    gbk/gb2312
    Utilise un jeu de caractères à deux octets. Les caractères chinois et anglais sont représentés par des caractères doubles. Afin de distinguer le chinois, les bits les plus élevés sont définis sur 1
    gb2312 est un sous-. enfant de gbk Set, gbk est un sous-ensemble de gb18030, gb2312 ne peut stocker que des caractères chinois simplifiés
    gbk comprend un grand jeu de caractères chinois, japonais et coréens
    Habituellement, l'utilisation du jeu de caractères gbk suffit
    International la polyvalence est pire que utf8, mais utf8 La base de données occupée est plus grande que gbk (utf8 est un jeu de caractères à trois octets)

  • utf8/utf8mb4

    Le nom complet UTF (Unicode Transformation Format), est une méthode de stockage Unicode, codage de caractères à longueur variable, également connu sous le nom d'Unicode ;
    Essayez d'utiliser utf8 pour le jeu de caractères de la base de données (y compris la connexion, le résultat et la page html finale doit être cohérente avec utf8);
    UTF8 utilise des octets de longueur variable pour stocker les caractères Unicode. Par exemple, les lettres ASCII continuent d'utiliser 1 octet pour stocker, les caractères accentués, les lettres grecques ou les lettres cyrilliques utilisent 2 octets. pour stocker, alors que les caractères chinois couramment utilisés nécessitent Utilisez 3 octets ; c'est-à-dire qu'un caractère anglais est égal à un octet et un caractère chinois (y compris le chinois traditionnel) est égal à trois octets.
    utf8mb4 peut stocker jusqu'à 4 octets par caractère, il peut donc prendre en charge plus de jeux de caractères ; utf8mb4 est couramment utilisé dans les projets pour stocker des expressions emoji ;
    latin1 est un jeu de caractères de 8 bits (1 octet), mais il ne peut pas couvrir ; Langues asiatiques et africaines. ;
    unidoce est une extension de latin1, qui ajoute la prise en charge des langues asiatiques et africaines classiques, mais ne prend toujours pas en charge toutes les langues, et il n'est pas efficace d'utiliser unidoce pour représenter l'ASCII (c'est souvent facile pour convertir un petit jeu de caractères en un grand jeu de caractères)
    utf8 est une extension d'Unicode
    gbk, gb2312 et d'autres jeux de caractères et utf8 doivent être convertis entre eux via l'encodage Unicode ;

Suggestions d'utilisation des jeux de caractères

1. Lorsque vous êtes sûr qu'il n'y a que des terminaux chinois. les utilisateurs, vous pouvez choisir gbk / gb2312

2 Afin de faciliter la migration des données et l'affichage de plusieurs terminaux, il est préférable d'utiliser utf8

3 lorsque les caractères n'ont pas besoin d'être en casse-. sensible, le jeu de vérification xx_ci par défaut peut être utilisé, sinon sélectionnez le jeu de vérification xx_bin (dans un environnement de production, essayez de ne pas modifier le jeu de vérification)

4. Le jeu de caractères par défaut est latin1. Caractères chinois séparément, de sorte que les résultats de récupération ne sont pas assez précis. L'avantage est que pour économiser de l'espace, il n'est pas recommandé d'utiliser

Plage de jeux de caractères MySQL<.>

Couche serveur (serveur) > base de données (base de données) > Table de données (table) >

Priorité du jeu de caractères MySQL

Connexion | Résultat > Table > 🎜>

char type

char(N) : N représente le nombre de caractères (également appelé longueur de caractère), pas d'octets char(N) : Il s'agit d'un stockage de longueur fixe, occupant un espace de stockage de longueur fixe, et la partie insuffisante est remplie d'espaces ; lorsque MySQL traite le type char(N), il doit supprimer les espaces et revenir. Espace de stockage : L'espace de stockage de type char(N) est lié au jeu de caractères combiné aux points de connaissance du jeu de caractères à l'instant, un chinois occupe 3 octets dans le jeu de caractères utf8, gbk occupe. 2 octets, les nombres et les caractères sont uniformément représentés par un seul caractère.

Mécanisme de stockage : lorsque la longueur n'est pas suffisante, MySQL doit remplir des espaces spéciaux lors du stockage des données, au lieu de 20 hexadécimaux


En pensant :

char(30 ), le nombre maximum de lettres et de caractères chinois qui peuvent être stockés dans différents jeux de caractères, et l'espace occupé

gbk : peut stocker 30 octets, occupant l'espace 30*2utf8 : peut stocker 30 octets, occupant l'espace 30*3

type varcahr

varchar(N) : N représente le nombre de caractères (également appelé longueur des caractères), pas d'octetsvarchar(N) : c'est stockage de longueur variable, utilisant uniquement l'espace de stockage nécessaire. Espace de stockage : L'espace de stockage de type varchar(N) est lié au jeu de caractères Combiné avec les points de connaissance du jeu de caractères tout à l'heure, un. Le chinois occupe 3 octets dans le jeu de caractères utf8, gbk occupe 2 octets uniformément et les nombres et les caractères sont représentés par un seul caractère.

Mécanisme de stockage : le stockage du champ varchar(N) commence en fait à partir du deuxième octet, puis utilise 1 à 2 octets pour représenter la longueur réelle. Le reste est la plage qui peut stocker des données, donc le stockage maximum disponible est la plage. 65535-3=65532 octets ; le premier octet indique s'il est vide (si la longueur est inférieure à 255 octets, utilisez un octet pour représenter la longueur ; si elle est supérieure à 255 octets, utilisez deux octets pour représenter la longueur).

Modifier le jeu de caractères de l'instance de base de données

Efficace temporaire

mysql> set character_set = 'gbk';
mysql> set character_set_client = 'gbk';

Efficace global

mysql> set global character_set_client = 'gbk';
Query OK, 0 rows affected (0.00 sec)

Efficace permanent

vim /etc/my.cnf 
character-set-server=utf8

Résumé : Ce qui précède représente l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'étude de chacun. Pour plus de didacticiels connexes, veuillez visiter le tutoriel graphique de base de données MySQL , le tutoriel vidéo MySQL, le tutoriel vidéo bootstrap !

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer