如何使用node.js从mysql获取可读字符串?

时间:2013-09-14 22:56:11

标签: javascript mysql node.js node-mysql

当用户注册时,我将其名称保存在mysql中(数据库中的俄语名称似乎是 - ÐрминÑÐ)。当我用PHP从数据库中获取数据并打印出来时,它运行良好(显示俄语字母),但是当用户连接到node.js服务器(使用socket.io)时,进行mysql查询(使用node-mysql模块)并接收数据从查询,然后他的名字似乎 - ÐрминÑÐ。 如何获得可读的字母?

以下是我服务器文件中的一些行:

var mysql = require('mysql');
var db = mysql.createConnection({host:'x', user:'x', password:'x', database:'x', charset:'UTF8_GENERAL_CI'});
db.connect();
var http = require('http');
var server = http.createServer(function(req,res){
    req.setEncoding("utf8");
    }).listen(8080);
var io = require('socket.io').listen(server);

3 个答案:

答案 0 :(得分:0)

我认为这应该有所帮助:

function onRequest(request, response) {

  ...

  request.setEncoding("utf8");

  ...
}

http.createServer(onRequest).listen(8888);

答案 1 :(得分:0)

以下是我在前端使用的内容:

function encode_utf8(s) {
  return unescape(encodeURIComponent(s));
}

function decode_utf8(s) {
  return decodeURIComponent(escape(s));
}

所以,尝试将你的字符串传递给

decodeURIComponent(escape(name));

答案 2 :(得分:0)

我遇到了同样的问题。 尝试调试它。如果前端的console.log数据具有不正确的字符集,则只需更新socket.io脚本。