Maison  >  Article  >  interface Web  >  nodejs publie du code chinois tronqué

nodejs publie du code chinois tronqué

WBOY
WBOYoriginal
2023-05-11 12:23:36524parcourir

Node.js est un moteur JavaScript côté serveur populaire largement utilisé dans le développement Web. Cependant, lors du traitement des requêtes POST, les caractères chinois apparaissent souvent tronqués, ce qui peut entraîner une série de problèmes.

La raison du problème est que dans le protocole HTTP, la partie entité de données de la requête POST est codée via la méthode de codage spécifiée par l'en-tête Content-Type. Si le client qui envoie la demande et le serveur qui reçoit la demande utilisent des méthodes de codage différentes, les caractères chinois seront tronqués.

Ainsi, la clé pour résoudre ce problème est de garantir que le même encodage est utilisé lors de la demande et de la réception de données. Voici quelques solutions :

  1. Spécifiez la méthode d'encodage de la requête

Lors de l'envoi d'une requête POST, vous pouvez spécifier la méthode d'encodage des données de la requête en définissant l'en-tête Content-Type. Si la requête contient des caractères chinois, vous pouvez définir l'en-tête Content-Type sur application/x-www-form-urlencoded;charset=utf-8, c'est-à-dire utiliser l'encodage UTF-8 pour encoder :

const data = new URLSearchParams();
data.append('username', '张三');
data.append('password', '123456');
fetch('/login', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'
  },
  body: data
});
  1. Spécifiez la réponse méthode d'encodage

Lors de la réception d'une requête POST, vous pouvez spécifier la méthode d'encodage des données de réponse en définissant l'en-tête Content-Type. De même, si la réponse contient des caractères chinois, vous pouvez définir l'en-tête Content-Type sur text/html;charset=utf-8, c'est-à-dire encoder en utilisant l'encodage UTF-8 :

app.post('/login', (req, res) => {
  res.setHeader('Content-Type', 'text/html;charset=utf-8');
  res.send('<p>登录成功</p>');
});
  1. Utilisez un middleware pour gérer l'encodage

Un middleware peut être utilisé pour gérer l'encodage des requêtes POST. Le middleware body-parser est une solution courante qui gère automatiquement l'encodage des données de la requête, garantissant que le même encodage est utilisé lors de la réception et de l'envoi des données dans la requête :

const express = require('express');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.post('/login', (req, res) => {
  const { username, password } = req.body;
  console.log(username, password);
  res.send('<p>登录成功</p>');
});

Dans cet exemple, le middleware body-parser a été ajouté à l'application. , utilisez-le pour gérer l'encodage des requêtes POST.

En général, pour résoudre le problème du chinois tronqué dans les requêtes POST, vous devez vous assurer que l'encodage de la requête et de la réponse est cohérent et utiliser correctement le middleware pour gérer le problème d'encodage. Ces solutions peuvent garantir que l'application ne rencontre pas de problèmes de chinois tronqué lors du traitement des requêtes POST, gérant ainsi mieux la communication entre l'utilisateur et le serveur.

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