Bei der Verwendung von Node.js zum Senden von HTTP-POST-Anfragen werden nach der Übergabe chinesischer Parameter manchmal verstümmelte Zeichen angezeigt. In diesem Artikel werden einige gängige Lösungen vorgestellt.
Wenn wir chinesische Parameter über eine HTTP-POST-Anfrage in Node.js übermitteln und keine Kodierung durchgeführt wird, werden die chinesischen Parameter in UTF-8-Kodierung an den Server gesendet. In einigen Fällen kann der Server jedoch UTF-8-codierte chinesische Parameter nicht korrekt analysieren, was zu verstümmelten Zeichen führt. Diese Situation hat normalerweise folgende Gründe:
Wir können das serverseitige Kodierungsformat auf UTF-8 einstellen, um die vom Client gesendeten UTF-8-kodierten chinesischen Parameter korrekt zu analysieren. Im Express-Framework können wir das Codierungsformat über den folgenden Code auf UTF-8 festlegen:
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() })
Wir können das Feld „Content-Type“ im Anforderungsheader auf „sein“ festlegen in Node.js application/x-www-form-urlencoded;charset=utf-8, um dem Server mitzuteilen, dass die empfangenen Anforderungsparameter UTF-8-codiert sind. Wenn wir die Axios-Bibliothek verwenden, um eine HTTP-POST-Anfrage zu stellen, können wir den Anforderungsheader wie folgt festlegen:
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) })
Für einige Node.js-Module, die die Standardkodierung nicht auf UTF-8 setzen, haben wir kann den Prozess manuell kodieren und chinesische Parameter in UTF-8-Kodierung konvertieren. Wenn wir das Querystring-Modul für die Codierungsverarbeitung verwenden, können wir es wie folgt verwenden:
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()
Beim Erstellen einer Node.js-HTTP-POST-Anfrage kommt es häufig vor, dass chinesische Parameter verstümmelt werden. Wir müssen das serverseitige Codierungsformat, die Anforderungsheader und die manuelle Codierungsverarbeitung korrekt festlegen, um sicherzustellen, dass chinesische Parameter korrekt übergeben werden können. Gleichzeitig müssen wir bei der Verwendung einiger Node.js-Module auch darauf achten, ob das Codierungsformat standardmäßig auf UTF-8 eingestellt ist.
Das obige ist der detaillierte Inhalt vonnodejs postet verstümmelten Code. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!