nodejs运行会出现乱码,该怎么解决?

JavaScript013

nodejs运行会出现乱码,该怎么解决?,第1张

nodejs乱码处理

1.处理回显乱码

res.write("<head><meta charset='utf-8'></head>")

2.处理传参乱码

querystring.escape(str)

escape可使传入的字符串进行编码

querystring.escape

querystring.escape("name=慕白")

/*

return:

'name%3D%E6%85%95%E7%99%BD'

*/

querystring.unescape(str)

unescape方法可将含有%的字符串进行解码

querystring.unescape

querystring.unescape('name%3D%E6%85%95%E7%99%BD')

/*

return:

'name=慕白'

*/

3.与编码相关的代码

var encoding = require('encoding')var iconv = require('iconv-lite')

console.log(encoding.convert("%E7%9A%84%E5%A3%AB%E9%80%9F%E9%80%92", "utf-8"))

console.log(iconv.decode('%E7%9A%84%E5%A3%AB%E9%80%9F%E9%80%92', 'utf-8'))

Node.js 支持中文不太好(实际上是Javascript支持),见《Node.js开发指南》。

要想Node.js正常显示中文,需要两点:

1、js文件保存为unicode格式。js文件是否为unicode格式,一个简单的方法是使用记事本来判断。使用记事本打开JS文件,点菜单另存为,看编码格式是否为"UTF-8"。若不是,可使用UltraEdit工具进行转换,使用记事本也可以转换。

2、在js文件中增加编码说明meta数据,让浏览器知道使用什么编码来解释网页。

两个条件缺一不可。

一个Node.js中使用中文的例子如下,该app.js需保存为utf-8格式,同时在文中增加meta编码数据说明:

[javascript] view plain copy

<meta charset="utf-8"/>

[javascript] view plain copy

//app.js

var http = require('http')

http.createServer(function(req, res) {

res.writeHead(200, {'Content-Type': 'text/html'})

res.write('<head><meta charset="utf-8"/></head>')

res.write('<h1>Node.js</h1>')

res.write('<b>亲爱的,你慢慢飞,小心前面带刺的玫瑰...</b>')

res.end('<p>Hello World</p>')

}).listen(3000)

console.log("HTTP server is listening at port 3000.")