Maison interface Web Questions et réponses frontales Caractères chinois tronqués reçus par nodejs

Caractères chinois tronqués reçus par nodejs

May 08, 2023 am 09:33 AM

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 :

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

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.

  1. 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 } }))
Copier après la connexion
  1. 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) // 输出:"中文"
Copier après la connexion
  1. 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)) }}))
Copier après la connexion

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!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Qu'est-ce que l'utilisation Effecte? Comment l'utilisez-vous pour effectuer des effets secondaires? Qu'est-ce que l'utilisation Effecte? Comment l'utilisez-vous pour effectuer des effets secondaires? Mar 19, 2025 pm 03:58 PM

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.

Qu'est-ce que UseContext? Comment l'utilisez-vous pour partager l'état entre les composants? Qu'est-ce que UseContext? Comment l'utilisez-vous pour partager l'état entre les composants? Mar 19, 2025 pm 03:59 PM

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.

Comment connectez-vous les composants React au magasin Redux à l'aide de Connect ()? Comment connectez-vous les composants React au magasin Redux à l'aide de Connect ()? Mar 21, 2025 pm 06:23 PM

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

Comment empêchez-vous le comportement par défaut dans les gestionnaires d'événements? Comment empêchez-vous le comportement par défaut dans les gestionnaires d'événements? Mar 19, 2025 pm 04:10 PM

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é.

Quels sont les avantages et les inconvénients des composants contrôlés et incontrôlés? Quels sont les avantages et les inconvénients des composants contrôlés et incontrôlés? Mar 19, 2025 pm 04:16 PM

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.

Le rôle de React dans HTML: Amélioration de l'expérience utilisateur Le rôle de React dans HTML: Amélioration de l'expérience utilisateur Apr 09, 2025 am 12:11 AM

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é.

Quelles sont les limites du système de réactivité de Vue 2 en ce qui concerne les changements de tableau et d'objets? Quelles sont les limites du système de réactivité de Vue 2 en ce qui concerne les changements de tableau et d'objets? Mar 25, 2025 pm 02:07 PM

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é.

Comment définissez-vous les itinéraires en utilisant le & lt; Route & gt; composant? Comment définissez-vous les itinéraires en utilisant le & lt; Route & gt; composant? Mar 21, 2025 am 11:47 AM

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é.

See all articles