Maison  >  Article  >  base de données  >  Explication détaillée de la solution aux caractères tronqués dans la requête de commande SQL

Explication détaillée de la solution aux caractères tronqués dans la requête de commande SQL

韦小宝
韦小宝original
2018-03-14 15:52:368365parcourir

Cet article décrit la solution au code tronqué dans la requête de commande sql requête Si vous ne connaissez pas la solution au code tronqué dans la requête de commande sql ou si vous êtes intéressé par la solution au code tronqué dans la requête de commande sql. code dans la requête de la commande SQL, puis regardons cet article ensemble. Bon, sans plus tarder, entrons dans le vif du sujet



Requête en ligne de commande MySQL Solution aux caractères tronqués :


La raison pour laquelle MySQL aura des caractères chinois tronqués n'est rien de plus que les points suivants :
1. Le serveur lui-même est défini. Problèmes résolus, par exemple, toujours bloqué en latin1

2. Problème de configuration de la langue de la table (y compris les caractères et le classement)

3. . Problème de paramétrage de la langue de connexion du programme client (tel que php)

Il est fortement recommandé d'utiliser utf8, utf8 est compatible avec tous les caractères du monde

Étape 1 : Trouver le répertoire où se trouve mysql est installé et trouvez le fichier my.ini

Étape 2 : Utilisez le Bloc-notes pour ouvrir le fichier my.ini,

Trouvez cet endroit et voyez si le jeu de caractères par défaut est utf8. Sinon, remplacez-le par utf8 ! (Les versions précédentes peuvent ne pas contenir cette phrase, ajoutez-la simplement directement !)






# MySQL client library initialization.

[client]

port=3306

[mysql]

default-character-set=utf8

# Initialisation de la bibliothèque client MySQL.

[client]

port=3306

[mysql]

par défaut-caractère-set=utf8

第三步:在mysql数据库cmd中输入:afficher les variables comme '%char%';

第四步:改变原有数据库的编码方式:

1

1

2

3

4

set character_set_database=utf8;

set character_set_server=utf8;

set character_set_client=gb2312;

set character_set_connection=gb2312;

2

3

4

set character_set_database=utf8;

set character_set_server=utf8;

set character_set_client=gb2312;

set character_set_connection=gb2312;

Étape 5 : Méthode d'encodage modifiée :

Étape 6 : Afficher les résultats de la requête :

Étape 6 : Essayez d'insérer des données chinoises ! D'ACCORD! Il peut être inséré !

Étape 7 : Résolvez le code tronqué lors de la sélection de * dans le tableau. En fait, seules les quatrième et septième parties sont utilisées

Utilisez la méthode d'encodage ci-dessus. Changement :

set Character_set_results=gb2312 ; et il s'affichera normalement !

À propos de GBK, GB2312, UTF8

UTF-8 : format de transformation Unicode-8 bits, la nomenclature est autorisée, mais généralement pas Contient la nomenclature. Il s'agit d'un codage multi-octets utilisé pour résoudre les caractères internationaux. Il utilise 8 bits (soit un octet) pour l'anglais et 24 bits (trois octets) pour le chinois. UTF-8 contient des caractères nécessaires à tous les pays du monde. Il s'agit d'un codage international doté d'une grande polyvalence. Le texte codé en UTF-8 peut être affiché sur les navigateurs de divers pays prenant en charge le jeu de caractères UTF8 . Par exemple, s'il s'agit d'un encodage UTF8, le chinois peut également être affiché sur l'IE anglais des étrangers, et ils n'ont pas besoin de télécharger le package de prise en charge de la langue chinoise d'IE.

GBK est une norme basée sur la norme nationale GB2312 et étendue pour être compatible avec GB2312. Le codage de texte de GBK est représenté par des octets doubles, c'est-à-dire que les caractères chinois et anglais sont représentés par des octets doubles. Afin de distinguer les caractères chinois, les bits les plus élevés sont définis sur 1. GBK contient tous les caractères chinois et constitue un codage national. Il est moins polyvalent que UTF8, mais UTF8 occupe une base de données plus grande que GBD.

Le codage Unicode doit être utilisé pour convertir GBK, GB2312, etc. en UTF8 :
GBK, GB2312--Unicode--UTF8
UTF8--Unicode--GBK, GB2312

Pour un site web ou un forum, s'il y a beaucoup de caractères anglais, il est recommandé d'utiliser UTF-8 pour gagner de la place. Cependant, de nombreux plug-ins de forum ne prennent désormais généralement en charge que GBK.

GB2312 est un sous-ensemble de GBK, qui est un sous-ensemble de GB18030
GBK est un grand jeu de caractères comprenant des caractères chinois, japonais et coréens
S'il s'agit d'un site Web chinois recommandant GB2312, GBK a parfois encore quelques problèmes
Afin d'éviter tous les problèmes de code tronqué, UTF-8 devrait être utilisé. Il sera également très pratique de prendre en charge l'internationalisation à l'avenir
UTF-8 peut être considéré comme un. grand jeu de caractères, qui contient l’encodage de la plupart du texte.
L'un des avantages de l'utilisation de l'UTF-8 est que les utilisateurs d'autres régions (telles que Hong Kong et Taiwan) peuvent afficher votre texte normalement sans caractères tronqués sans installer la prise en charge du chinois simplifié.

gb2312 est le code du chinois simplifié
gbk prend en charge le chinois simplifié et le chinois traditionnel
big5 prend en charge le chinois traditionnel
utf-8 prend en charge presque tous les caractères

Analysez d'abord les caractères tronqués situation du code

Plusieurs jeux de caractères impliqués dans MySQL

character-set-server/default-character-set : jeu de caractères du serveur, utilisé par défaut.
character-set-database : jeu de caractères de la base de données.
character-set-table : jeu de caractères de la table de base de données.
La priorité augmente en séquence. Par conséquent, dans des circonstances normales, seul le jeu de caractères du serveur doit être défini, et le jeu de caractères n'est pas spécifié lors de la création de bases de données et de tables. De cette façon, le jeu de caractères du serveur de jeux de caractères est uniforme. utilisé.
character-set-client : le jeu de caractères du client. Jeu de caractères par défaut du client. Lorsqu'un client envoie une requête au serveur, la requête est codée dans ce jeu de caractères.
character-set-results : jeu de caractères de résultat. Lorsque le serveur renvoie des résultats ou des informations au client, les résultats sont codés dans ce jeu de caractères.
Côté client, si le jeu de caractères résultats n'est pas défini, le jeu de caractères jeu de caractères client est utilisé comme jeu de caractères par défaut. Il suffit donc de définir le jeu de caractères client.

Pour traiter le chinois, vous pouvez définir à la fois le jeu de caractères-serveur et le client de jeu de caractères sur GB2312. Si vous souhaitez traiter plusieurs langues en même temps, définissez-le sur UTF8.

À propos du problème chinois de MySQL

La façon de résoudre le code tronqué est de définir les trois paramètres système suivants de MySQL pour qu'ils correspondent au jeu de caractères du serveur - avant exécution de l'instruction SQL Le même jeu de caractères que set-server.
character_set_client : le jeu de caractères du client.
character_set_results : jeu de caractères de résultat.
character_set_connection : jeu de caractères de connexion.
Définissez ces trois paramètres système en envoyant des instructions à MySQL : définir les noms gb2312

Ce qui précède représente tout le contenu de cet article. Si vous n'en savez pas grand-chose, vous pouvez en implémenter davantage. des deux côtés par vous-même. C’est facile à maîtriser !

Recommandations associées :
requête SQLComment utiliser dans un tableau

Secrets pour accélérer les requêtes SQL afin d'empêcher le code de la base de données de verrouiller la base de données

Requêtes complexes d'instructions de requête 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