Вопрос по node.js – Почему я не могу написать китайские символы в HTTP-ответе nodejs?
Вот мой маленький код:
<code>var http = require('http'); var port = 9002; var host_ip = '<my_ip>'; http.createServer(function (req, res) { var content = new Buffer("Hello 世界", "utf-8") console.log('request arrived'); res.writeHead(200, { 'Content-Encoding':'utf-8', 'charset' : 'utf-8', 'Content-Length': content.length, 'Content-Type': 'text/plain'}); res.end(content.toString('utf-8'),'utf-8'); }).listen(port, host_ip); console.log('server running at http://' + host_ip + ':' + port); </code>
Ранее я просто позволилres.end
отправить "Привет, мир" и это сработало хорошо. Затем я захотел немного подстроиться и изменил «мир». в китайском эквиваленте "& # x4E16;" # # x754C; "и таким образом изменили" кодировку " & APOS; тип содержимого & APOS; в заголовке "utf-8". Но в Chrome и Firefox я вижу это:
<code>hello 涓栫晫 </code>
Тем не менее, удивительно опера (11.61) показывает правильный результатhello 世界
, Я хочу знать, пропустил ли я что-то в коде и почему это происходит. Спасибо вам, ребята.
Я думаюэта почта похоже на мою ситуацию, но не совсем.
content-encoding
это не набор символов, а кодировка самого ответа http
charset
не обычный заголовок http
content-length
здесь не нужно
как сказал @jjrv, ты должен написать'Content-Type': 'text/plain;charset=utf-8'
там
content- length
это будет пакет с фрагментами, и я думаю, что он не будет правильно отображать китайский символ. Но после добавления 'charset = utf-8' вContent-Type
Я опустилcontent-length
поле и все работало нормально.
м изменением:
'Content-Type': 'text/plain;charset=utf-8'
Протестировано с Chrome, Firefox и Safari.
Вы также можете заглянуть в пакет node.js & quot; express & quot; что позволяет переписать ваш код следующим образом:
var express=require('express');
var app=express.createServer();
app.get('/',function(req, res) {
var content = "Hello 世界";
res.charset = 'utf-8';
res.contentType('text');
res.send(content);
});
app.listen(9002);