Maison  >  Article  >  base de données  >  Explication détaillée de la différence entre les caractères pleine chasse et les caractères demi-chasse stockés dans MySQL

Explication détaillée de la différence entre les caractères pleine chasse et les caractères demi-chasse stockés dans MySQL

黄舟
黄舟original
2017-05-28 09:55:223043parcourir

Cet article présente principalement les informations pertinentes sur la différence entre MySQL stockant des caractères pleine chasse et des caractères demi-chasse. Les amis dans le besoin peuvent s'y référer

Malheureusement, lorsque l'entreprise. testait la messagerie instantanée en interne. Lorsque vous rencontrez une erreur MYSQL_DATA_TRUNCATED, l'enregistrement du journal apparaît toujours lorsque mysql_stmt_fetch est appelé. Compte tenu de l'expérience précédente, cela devrait être dû à la longueur insuffisante de la zone de liaison de l'ensemble de résultats donné. Je l'ai vérifié plusieurs fois et n'ai trouvé aucun problème. J'ai des relations correspondantes dans mon code, telles que char(20). Dans mon code, je définirai char buffer[20]array pour le stockage. Cela a l’air si juste et parfait. Je n'avais pas d'autre choix que d'imprimer chaque ligne de données, de rechercher la ligne d'enregistrements dans laquelle l'erreur avait été signalée et de constater que la police était différente des autres. Par exemple :

123456789 (demi-largeur)
123456789 (pleine largeur)

Ceci n'est pas contrôlé par ma saisie d'espaces, mais par la pleine largeur et méthode de saisie demi-largeur. Pour les caractères pleine chasse, c'est deux fois la longueur des caractères demi-chasse, et mon MySQL utilise utf-8, donc dans la base de données, il s'agit d'un caractère pleine chasse de 3 octets.

select length(column) from table_name where…;

Utilisez-le pour imprimer la longueur et vous pourrez en juger. À ce stade, vous devez considérer le problème de la correspondance entre la longueur du type dans le code et la longueur du champ de la base de données, comme les caractères pleine chasse ou les caractères chinois. Char(20) dans la base de données représente 20 caractères, et non 20 octets. Veuillez noter ici que lors de la récupération de données, n'utilisez pas les 20 comme longueur du jeu de résultats pour récupérer les données.

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