欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

mysql-node.js解析input中文报错

程序员文章站 2022-06-01 19:45:45
...
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);}