Que faire si les résultats de la requête nodejs sont tronqués

PHPz
Libérer: 2023-04-26 09:25:37
original
641 Les gens l'ont consulté

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

  1. Définissez le jeu de caractères de l'en-tête de réponse

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"});
Copier après la connexion

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.

  1. Définissez le jeu de caractères de connexion

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'
});
Copier après la connexion

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.

  1. Définissez le jeu de caractères de la base de données

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;
Copier après la connexion

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.

  1. Modifier le fichier de configuration my.cnf

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!