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.")