我有一个基于socket.io的聊天服务器,可以将消息保存到MongoDB。当用户发送类似ಠ_ಠ的内容时,它会通过套接字发出并正确显示,但当我收到同样的消息并通过Mongoose将其保存到MongoDB时,我最终保存在数据库中的à²_à²。
我认为Mongoose / MongoDB / socket.io默认使用UTF-8 ...为什么在将数据保存到数据库时将数据转换为ASCII?
socket.on('newMessage', function(data){
var data = JSON.parse(data);
var chatMessage = new ChatMessage();
chatMessage.user = data.userId;
chatMessage.room = data.roomId;
chatMessage.message = data.message.toString("utf8");
chatMessage.save(function(err, message){
// Emits ಠ_ಠ
socket.broadcast.to(data.roomId).emit('deliverMessage', JSON.stringify(message));
});
我甚至发出保存到MongoDB的内容(消息不是data.message),但是MongoDB已经存储了à²_à... ... SOOOOOO confused:s
我理解编码及其重要性。我的问题是socket.io,mongoDB,mongoose管道的哪一部分正在切换编码以及为什么当一切似乎都在说uft-8?