Dans Node.js, nous rencontrons souvent le problème des résultats de requêtes tronqués. La principale raison de ce problème est que dans Node.js, le serveur utilise le codage UTF-8 par défaut, mais la base de données utilise le codage GBK par défaut. Par conséquent, après avoir exécuté l’opération de requête, des caractères tronqués apparaîtront. Cet article présentera en détail comment résoudre le problème des résultats de requête tronqués dans Node.js.
1. Comprendre le codage UTF-8 et GBK
Le codage UTF-8 est une méthode de codage Unicode codée en octets. Cette méthode de codage est actuellement la méthode de codage Unicode la plus largement utilisée. Elle utilise des codages sur un octet, deux octets et trois octets de différentes longueurs pour représenter les caractères.
L'encodage GBK est une méthode d'encodage comme le code ASCII. Il utilise un encodage sur deux octets et peut accueillir un maximum de 21 886 caractères chinois. Le codage GBK a été initialement développé par Microsoft et a ensuite été désigné comme norme de codage chinoise par le National Bureau of Standards.
2. Solution
Lors de l'exécution d'opérations de requête, nous pouvons définir le jeu de caractères de l'en-tête de réponse afin que les résultats de la requête puissent être analysés correctement. Voici un exemple de code pour définir le jeu de caractères d'en-tête de réponse :
res.writeHead(200, {"Content-Type": "text/html;charset=utf-8"});
Remarque : Bien que cette méthode puisse résoudre le problème des caractères tronqués, ce n'est pas la meilleure solution. Sauf circonstances particulières, nous ne devrions généralement pas utiliser cette méthode.
Nous pouvons définir le jeu de caractères de connexion sur UTF-8 avant de vous connecter à la base de données. Voici un exemple de code pour définir le jeu de caractères de connexion :
var connection = mysql.createConnection({ host: 'localhost', user: 'root', password: '', database:'test', port: 3306, charset : 'utf8mb4' });
Remarque : Cette méthode doit être définie à chaque fois que vous vous connectez à la base de données, ce qui est plus gênant.
Nous pouvons définir le jeu de caractères de la base de données sur UTF-8 lors de la création de la base de données. Voici un exemple de code pour définir le jeu de caractères de la base de données :
CREATE DATABASE my_db DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci;
Remarque : Cette méthode doit être définie à chaque fois que la base de données est créée et s'applique à moins de scénarios.
Nous pouvons modifier le fichier de configuration my.cnf et définir le jeu de caractères par défaut de la base de données sur UTF-8. Voici un exemple de modification du fichier de configuration my.cnf :
[mysqld] init_connect='SET collation_connection = utf8mb4_unicode_ci' init_connect='SET NAMES utf8mb4' character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci
Remarque : Cette méthode est relativement complexe et nécessite de modifier le fichier de configuration, ce qui peut avoir un impact sur d'autres configurations.
3. Résumé
Vous trouverez ci-dessus plusieurs méthodes pour résoudre le problème des résultats de requête Node.js tronqués. En fonction des besoins réels et de l’environnement, choisissez une méthode qui vous convient.
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!