mysqlnode.js表单数据库
通过nodejs将html页面中的表单内容插入mysql数据库。当input文本框内输入的为英文或数字时完全正确,一旦输入中文,点击提交按钮,服务端显示错误incorrect string value……'
现在检查,数据库所有的字符设置都已经为utf8。nodejs代码中也有req.setencoding('utf8')。表单form标签中也有accept-charset=utf-8。node.js代码、html代码、浏览器编码全部为utf8。请问是哪里的错误导致nodejs不能解析input里的中文?
以下是我node.js的代码:
var http=require('http');var mysql=require('mysql');var qs=require('querystring');var db=mysql.createconnection({ host:'127.0.0.1', user:'root', password:'12345', database:'datanews'});var server=http.createserver(function(req,res){ switch (req.method) { case 'post': switch (req.url) { case '/': adduser(db,req,res); break; } break; }});server.listen(3000,'127.0.0.1');function adduser(db,req,res) { var newdata=''; req.setencoding('utf8'); req.on( 'data', function(chunck){ newdata+=chunck; } ); req.on( 'end', function () { var data=qs.parse(newdata); db.query( insert into userinfo(nickname,identify,password,gender,birthday) + values(?,?,?,?,?), [data.nickname,data.identify,data.password,data.gender,data.birthday], function (err) { if (err) { throw err; } else{ console.log(seccussful); var html='注册成功
' tobrowser(res,html); } } ) } )}function tobrowser(res,htmldata) { res.setheader('content-type','text/html;charset=utf8'); res.setheader('content-length',buffer.bytelength(htmldata)); res.end(htmldata);}