Deux solutions :
1. côté serveur et modifiez mon fichier.cnf, ajoutez une ligne caractère_set_server = utf8 sous [mysqld], puis redémarrez le service mysql
2 Lorsque vous utilisez jdbc pour vous connecter, spécifiez l'encodage correct, jdbc:mysql://127.0. .0.1:3306/test?useUnicode=true&characterEncoding= utf8
3. Quel est le mécanisme de traitement des caractères de MYSQL ? Pourquoi jdbc ne spécifie-t-il pas l'encodage ou le serveur ne définit pas Character_set_server=utf8, ce qui entraînera des caractères tronqués ?
Expliquez ces paramètres :character_set_database : le jeu de caractères par défaut de la base de données actuellement sélectionnée
character_set_filesystem : convertit le nom du fichier sur le système d'exploitation en ce jeu de caractères. Le binaire par défaut ne fait rien Converticharacter_set_results : jeu de caractères du résultat de la requête character_set_server : jeu de caractères d'opération interne par défaut
character_set_system : jeu de caractères des métadonnées du systèmecharacter_sets_dir : chemin d'accès au jeu de caractères
Le serveur transfère les données au jeu de caractères client (character_set_client) et est converti en caractère_set_connection, puis le jeu de caractères caractère_set_connection est converti en jeu de caractères correspondant et stocké sur le disque. est jugé selon la priorité suivante : 1. Le jeu de caractères défini lors de la création de la tableModifier le fichier de configuration mysql côté serveur, éditez le fichier my.cnf et ajoutez une ligne caractère_set_server = utf8 sous [mysqld], puis redémarrez le service mysql, puis interrogez le jeu de caractères :
Insérer des données :
Comprenez ensuite le processus de conversion du jeu de caractères :
2. Le jeu de caractères défini lors de la création de la bibliothèque
3. Données de requête :
Le serveur convertit les données du jeu de caractères stocké sur le disque en jeu de caractères Character_set_results, retourne au client puis analyse1. Jdbc ne définit pas CharacterEncoding=utf8, le serveur Character_set_server est. latin1, jdbc se connecte à la base de données avec le jeu de caractères latin1, et le serveur de base de données convertit latin1 en utf8 puis le stocke sur le disque (car les jeux de caractères spécifiés par Character_set_connection et la table de création sont tous deux utf8), ce qui provoque des caractères tronqués 2. jdbc ne définit pas CharacterEncoding=utf8, le serveur Character_set_server est utf8, ou jdbc définit CharacterEncoding=utf8, et jdbc est connecté à la base de données du jeu de caractères utf8, le serveur de base de données est stocké sur le disque en utf8, alors les données sont normales
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!