Lorsque vous utilisez Node.js pour effectuer des requêtes HTTP POST, des caractères tronqués apparaissent parfois après le passage des paramètres chinois. Cet article partagera quelques solutions courantes.
Lorsque nous soumettons des paramètres chinois via une requête HTTP POST dans Node.js, si l'encodage n'est pas effectué, les paramètres chinois seront envoyés au serveur en encodage UTF-8. Cependant, dans certains cas, le serveur ne peut pas analyser correctement les paramètres chinois codés en UTF-8, ce qui entraîne des caractères tronqués. Cette situation a généralement les raisons suivantes :
Nous pouvons définir le format d'encodage côté serveur sur UTF-8 pour analyser correctement les paramètres chinois codés en UTF-8 envoyés par le client. Dans le framework Express, nous pouvons définir le format d'encodage sur UTF-8 via le code suivant :
const express = require('express') const app = express() app.use(express.urlencoded({ extended: false })) app.use(express.json()) app.use(function(req, res, next) { res.header('Content-Type', 'text/html; charset=utf-8') next() })
Nous pouvons définir le champ Content-Type dans l'en-tête de la requête sur dans Node.js application/x-www-form-urlencoded;charset=utf-8 pour indiquer au serveur que les paramètres de requête reçus sont codés en UTF-8. Lorsque nous utilisons la bibliothèque axios pour effectuer une requête HTTP POST, nous pouvons définir l'en-tête de la requête comme ceci :
const axios = require('axios') axios.post('/api/posts', { title: '中文标题', content: '中文内容' }, { headers: { 'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8' } }).then(res => { console.log(res) }).catch(err => { console.log(err) })
Pour certains modules Node.js qui ne définissent pas l'encodage par défaut sur UTF-8, nous peut encoder manuellement le processus et convertir les paramètres chinois en encodage UTF-8. Lorsque nous utilisons le module de chaîne de requête pour le traitement de l'encodage, nous pouvons l'utiliser comme ceci :
const querystring = require('querystring') const https = require('https') const postData = querystring.stringify({ title: '中文标题', content: '中文内容' }) const options = { hostname: 'www.example.com', path: '/api/posts', method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'Content-Length': Buffer.byteLength(postData) } } const req = https.request(options, res => { console.log(`statusCode: ${res.statusCode}`) res.on('data', d => { process.stdout.write(d) }) }) req.on('error', error => { console.error(error) }) req.write(postData) req.end()
Lors d'une requête HTTP POST Node.js, il est courant que les paramètres chinois soient tronqués. Nous devons définir correctement le format de codage côté serveur, les en-têtes de requête et effectuer manuellement le traitement de codage pour garantir que les paramètres chinois peuvent être transmis correctement. Dans le même temps, lors de l'utilisation de certains modules Node.js, nous devons également faire attention à savoir si le format d'encodage a été défini par défaut sur UTF-8.
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!