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 :
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 });
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>'); });
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!