Caractères chinois tronqués reçus par nodejs
Avec le développement d'Internet, de nombreux développeurs ont commencé à utiliser Node.js pour le développement back-end. Cependant, certains développeurs rencontreront le problème des caractères chinois tronqués lorsqu'ils utiliseront Node.js pour recevoir des caractères chinois. Cette question est à la fois confuse et difficile. Cet article présentera le problème des caractères chinois tronqués reçus par Node.js et proposera plusieurs solutions.
Description du problème
Lorsque vous utilisez Node.js pour recevoir des requêtes contenant des caractères chinois, des caractères parfois tronqués apparaissent, comme le montre la figure ci-dessous :
Comme le montre la figure ci-dessus, les paramètres de la requête reçue contiennent des caractères chinois. , mais sont convertis en charabia. Ce n’est évidemment pas le résultat que nous souhaitons, alors où est le problème ?
Analyse des problèmes
Tout d'abord, nous devons comprendre le principe selon lequel Node.js reçoit les paramètres de requête.
Node.js est une plateforme haute performance basée sur des modèles d'E/S événementiels et non bloquants. Elle écoute le port réseau, déclenche un événement et encapsule la requête dans un objet de requête. . L'objet de requête contient les en-têtes de requête, le corps de la requête et d'autres informations. Lors de la réception du corps de la requête, Node.js utilise par défaut le codage UTF-8 pour le décodage.
Ainsi, si le corps de la requête que nous recevons contient des caractères chinois et que le Content-Type dans l'en-tête de la requête ne définit pas l'encodage du jeu de caractères, UTF-8 sera utilisé pour le décodage par défaut si l'encodage du jeu de caractères est défini dans. l'en-tête de la requête, puis un jeu de caractères spécifique sera utilisé pour le décodage. Cependant, si le codage du jeu de caractères n'est pas défini dans l'en-tête de la demande et que le corps de la demande contient plusieurs codages de jeux de caractères ou des caractères tronqués, Node.js peut provoquer des caractères tronqués lors du décodage.
Solution
Pour le problème des caractères chinois tronqués reçus par Node.js, nous pouvons partir des aspects suivants :
- Encodage uniforme du jeu de caractères
Afin d'éviter le problème de l'encodage du jeu de caractères incohérent, nous pouvons Définissez un codage de jeu de caractères unifié dans l’en-tête de la demande.
Par exemple, nous pouvons définir dans l'en-tête de la requête :
Content-Type: application/x-www-form-urlencoded;charset=utf-8
De cette façon, lors de la réception d'un corps de requête contenant des caractères chinois dans Node.js, il peut être décodé uniformément en utilisant l'encodage UTF-8.
- Forcer l'encodage du jeu de caractères
En plus de définir l'encodage du jeu de caractères dans l'en-tête de la requête, nous pouvons également forcer le décodage du jeu de caractères.
Par exemple, lors de l'utilisation du framework express, nous pouvons utiliser le middleware body-parser et spécifier le codage du jeu de caractères pour le décodage. L'exemple est le suivant :
const bodyParser = require('body-parser') const app = express() app.use(bodyParser.urlencoded({ extended: false, limit: '50mb', parameterLimit: 10000, type: 'application/x-www-form-urlencoded', verify: (req, res, buf) => { req.raw = buf } }))
- Utilisez le module iconv-lite pour décoder
Une autre méthode consiste à utiliser le module iconv-lite pour décoder, l'exemple de code est le suivant :
const iconv = require('iconv-lite') const buffer = Buffer.from('e4b8ade69687', 'hex') const str = iconv.decode(buffer, 'utf8') console.log(str) // 输出:"中文"
- Utilisez le codage de texte module à décoder
Le dernier La solution est d'utiliser le module d'encodage de texte pour le décodage.
Par exemple, lorsque nous utilisons le framework express, nous pouvons utiliser un décodeur d'encodage de texte pour notre analyseur de corps de requête et le définir sur utf-8. Un exemple est le suivant :
const express = require('express') const bodyParser = require('body-parser') const { TextDecoder } = require('text-encoding') const app = express() app.use(bodyParser.json({ verify: function(req, res, buf) { req.body = JSON.parse(new TextDecoder('utf-8').decode(buf)) }}))
Résumé
Cet article présente le problème de code tronqué qui peut survenir lorsque Node.js reçoit des requêtes contenant des caractères chinois, ainsi que plusieurs méthodes pour résoudre ce problème.
Dans le développement Node.js, il est très important de gérer correctement le problème des caractères chinois tronqués. Pour résoudre ce problème, nous pouvons utiliser un codage de jeu de caractères unifié, spécifier de force un codage de jeu de caractères, utiliser le module iconv-lite pour décoder et utiliser le module de codage de texte pour décoder, etc., afin d'éviter les caractères tronqués et de garantir le fonctionnement normal de l'application. J'espère que cet article pourra aider les développeurs à résoudre ce problème.
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

L'article traite de l'utilisation Effecte dans React, un crochet pour gérer les effets secondaires comme la récupération des données et la manipulation DOM dans les composants fonctionnels. Il explique l'utilisation, les effets secondaires courants et le nettoyage pour éviter des problèmes comme les fuites de mémoire.

L'article explique UseContext dans React, qui simplifie la gestion de l'État en évitant le forage des accessoires. Il traite des avantages tels que les améliorations centralisées de l'État et des performances grâce à des redevances réduites.

L'article discute de la connexion des composants React à Redux Store à l'aide de Connect (), expliquant MapStateToproprop, MapDispatchToprops et des impacts de performances.

L'article discute de la prévention des comportements par défaut dans les gestionnaires d'événements à l'aide de la méthode empêchée dedEfault (), de ses avantages tels que une expérience utilisateur améliorée et des problèmes potentiels tels que les problèmes d'accessibilité.

L'article traite des avantages et des inconvénients des composants contrôlés et incontrôlés dans la réaction, en se concentrant sur des aspects tels que la prévisibilité, la performance et les cas d'utilisation. Il conseille les facteurs à considérer lors du choix entre eux.

React combine JSX et HTML pour améliorer l'expérience utilisateur. 1) JSX incorpore du HTML pour rendre le développement plus intuitif. 2) Le mécanisme DOM virtuel optimise les performances et réduit les opérations DOM. 3) Interface utilisateur de gestion basée sur les composants pour améliorer la maintenabilité. 4) La gestion des états et le traitement des événements améliorent l'interactivité.

Le système de réactivité de Vue 2 lutte avec le réglage de l'index de tableau direct, la modification de la longueur et l'ajout / suppression de la propriété de l'objet. Les développeurs peuvent utiliser les méthodes de mutation de Vue et Vue.set () pour assurer la réactivité.

L'article traite de la définition des itinéraires dans le routeur React à l'aide de la & lt; Route & gt; Composant, couvrant des accessoires comme le chemin, le composant, le rendu, les enfants, le routage exact et imbriqué.
