1

当用户注册时,我将其名称保存在 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);
4

3 回答 3

0

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

于 2014-12-25T14:56:40.027 回答
0

这是我在前端使用的:

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

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

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

decodeURIComponent(escape(name));
于 2013-09-15T07:36:26.883 回答
0

我认为这应该有所帮助:

function onRequest(request, response) {

  ...

  request.setEncoding("utf8");

  ...
}

http.createServer(onRequest).listen(8888);
于 2013-09-14T23:13:22.757 回答