Maison >développement back-end >Golang >Comment résoudre le code tronqué de Golang MySQL

Comment résoudre le code tronqué de Golang MySQL

PHPz
PHPzoriginal
2023-04-03 09:17:121004parcourir

Golang est un langage de programmation open source. Son émergence a donné un autre choix à de nombreux programmeurs. MySQL est un système de gestion de bases de données relationnelles bien connu et de nombreux programmeurs Golang utilisent MySQL comme solution de stockage de données. Cependant, en raison des différences dans les jeux de caractères et d'autres aspects, de nombreux développeurs seront confrontés au problème des caractères tronqués lorsque Golang interagit avec MySQL.

Alors, comment résoudre le problème des caractères tronqués lorsque Golang interagit avec MySQL ? Voici quelques solutions possibles.

1. Définir le jeu de caractères

Le jeu de caractères par défaut de la base de données MySQL est utf8mb4, tandis que le jeu de caractères par défaut de Golang est utf8. Lorsque les jeux de caractères des deux côtés sont incohérents, des caractères tronqués apparaîtront. Par conséquent, nous pouvons spécifier le jeu de caractères comme utf8mb4 lors de la connexion à MySQL, comme indiqué ci-dessous :

db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/database?charset=utf8mb4")

Cela garantit que Golang et MySQL utilisent le même jeu de caractères. Il convient de noter que le jeu de caractères doit également être défini sur utf8mb4 lors de la création de la base de données.

2. Utilisez la valeur par défaut du jeu de caractères utf8mb4

La valeur par défaut du jeu de caractères utf8mb4 est utf8mb4_general_ci, et non utf8mb4_bin. Lorsque nous ne spécifions pas de jeu de caractères ou n'utilisons pas le jeu de caractères par défaut lors de la création d'une table ou d'un champ, MySQL utilisera utf8mb4_general_ci comme valeur par défaut. utf8mb4_general_ci est une méthode de comparaison basée sur le jeu de caractères Unicode. Elle est insensible à la casse et aux accents, ce qui la rend plus pratique lors du traitement de données texte.

Par conséquent, nous ne pouvons pas spécifier le jeu de caractères lors de la création d'une table ou d'un champ, et utiliser directement la valeur par défaut pour éviter les caractères tronqués. Comme indiqué ci-dessous :

CREATE TABLE user (
  name varchar(50) NOT NULL,
  age int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

3. Utilisez la fonction de conversion de jeu de caractères

Lorsque nous utilisons différents jeux de caractères, nous pouvons utiliser la fonction de conversion de jeu de caractères fournie par MySQL pour convertir du texte dans différents jeux de caractères. Parmi elles, les fonctions les plus couramment utilisées sont CONVERT() et CAST(). La fonction

  • CONVERT() peut convertir une chaîne d'un jeu de caractères en un autre. La syntaxe est la suivante :
CONVERT(str USING charset)

où str est la chaîne à convertir et charset est le jeu de caractères cible.

Par exemple, pour convertir une chaîne du jeu de caractères utf8 en une chaîne du jeu de caractères gbk, vous pouvez utiliser l'instruction suivante :

SELECT CONVERT('你好',CHARACTER SET gbk);
  • La fonction CAST() peut également convertir une chaîne d'un jeu de caractères à un autre. . Set, la syntaxe est la suivante :
CAST(str AS character_type CHARACTER SET charset)

Parmi eux, str est la chaîne à convertir, Character_type est le type de données cible et charset est le jeu de caractères cible.

Par exemple, pour convertir le nom du champ du jeu de caractères utf8 de type varchar en champ du jeu de caractères gbk, vous pouvez utiliser l'instruction suivante :

SELECT CAST(name AS char(20) CHARACTER SET gb2312) FROM user;

En utilisant la fonction de conversion du jeu de caractères, nous pouvons résoudre le problème tronqué lorsque Golang interagit avec MySQL.

Ci-dessus sont plusieurs façons possibles de résoudre le problème tronqué lorsque Golang interagit avec MySQL. Dans le développement réel, vous devez choisir la solution appropriée en fonction de la situation spécifique. J'espère que cet article pourra aider les programmeurs Golang à résoudre le problème des caractères tronqués.

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