节点js处理西里尔文编码有什么问题

如果你拿这个非常基本的,非常简单的例子

节点网页:

var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(1337, '127.0.0.1'); console.log('Server running at http://127.0.0.1:1337/'); 

这很好用,但是尝试打印一些西里尔字母,如下所示:

 var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Здравей Свят\n'); }).listen(1337, '127.0.0.1'); console.log('Server running at http://127.0.0.1:1337/'); 

你只会得到严重的解码字符。 我尝试了各种不同的内容types,内容长度,雇用节点iconv模块和其他东西的设置标题的组合,但我发现我的圈子。

基本上,我有基于意思的networking应用程序,我只是想从我的HTML /玉文件显示西里尔语文本到客户端浏览器。 已经几天挖了,没有结果。 我相信如果有人能说出为了使上面的代码工作应该做什么,我会适应它到我的应用程序(因为我已经非常确定,问题来自一些较低的水平,而不是从快递midlewares等..)

据我了解正确 – 这似乎是一个老问题,从某种程度上来说,javascript / v8是如何处理utf-8的。 我看到很多其他的post都抱怨类似的问题,但是因为我试图去适应每个人都没有运气,我想我会冒险发表一个重复的问题,并有我的机会…

我访问的其他一些post/主题:

使用node.js编码错误

node.js神经框架unicode响应

处理Node.Js / Express应用程序中的西里尔文编码

http://dougal.gunters.org/blog/2012/03/14/dealing-with-utf-in-node-js/

Node.js公共静态文件夹以UTF-8字符集服务js

为什么我不能在nodejs HTTP响应中写中文字符?

任何帮助将不胜感激!

阿拉斯泰尔的评论解决了我的问题,并解决了我的头痛:)

我正在使用WebStorm IDE,根本不记得检查自己的文件编码…一旦我尝试记事本++中的节点js例子,它直接工作。 即使不需要手动设置字符集。

事实certificate,不需要通过手动设置编码

  res.writeHead(200, {'Content-Type': 'text/plain; charset=utf-8'}); 

因此,如果有人遇到类似的问题,请首先validation源文件的编码!