通过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='<p>注册成功</p>'
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);
}