Javascript 带socket.io的节点中的UTF-8

Javascript 带socket.io的节点中的UTF-8,javascript,node.js,utf-8,character-encoding,socket.io,Javascript,Node.js,Utf 8,Character Encoding,Socket.io,我无法使用nodejs和socket.io将utf-8编码的字符串传递给客户端。我使用的传输方式(websocket、flashsocket或xhr轮询)似乎并不重要 代码非常简单明了: 服务器: var app = require('http').createServer(handler) , io = require('socket.io').listen(app,{log:false}); app.listen(80); function handler (req, res) {

我无法使用nodejs和socket.io将utf-8编码的字符串传递给客户端。我使用的传输方式(websocket、flashsocket或xhr轮询)似乎并不重要

代码非常简单明了:

服务器:

var app = require('http').createServer(handler)
, io = require('socket.io').listen(app,{log:false});

app.listen(80);

function handler (req, res) {
    fs.readFile(__dirname + '/index.html','utf-8',
        function (err, data) {
          if (err) {
            res.writeHead(500);
            return res.end('Error loading index.html');
          }
          var type="text/html";
          res.writeHead(200, {'Content-Type':type + "; charset=utf-8"});
          res.end(data,'utf8');
        });
}

io.sockets.on('connection', function (socket) {
    socket.emit('msg', { text: 'æøå' });//Here we send the utf-8 characters to the client
});
客户:

<!Doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta charset=utf-8 />
<script type="text/javascript" src="http://192.168.0.12/socket.io/socket.io.js" charset="utf-8"></script>
<script type="text/javascript" charset="utf-8">
  window.WEB_SOCKET_SWF_LOCATION = 'http://192.168.0.12/socket.io/static/flashsocket/WebSocketMain.swf';
  var socket = io.connect('http://192.168.0.12');
  socket.on('msg', function(data){alert(data.text);}); //here the data is recieved and put into the alert box
  ...
  ...

window.WEB\u SOCKET\u SWF\u位置=http://192.168.0.12/socket.io/static/flashsocket/WebSocketMain.swf';
var socket=io.connect('http://192.168.0.12');
on('msg',函数(数据){alert(data.text);})//此处接收数据并将其放入警报框
...
...
看起来数据总是采用UTF-8双重编码,如下所示:


我正在使用nodejs 0.8.17和socket.io 0.9

您的node.js文件(第一段代码)没有以UTF-8编码保存,node.js希望文件以UTF-8编码保存。这取决于您的文本编辑器,但通常在保存文件时,您应该能够选择编码

您的.js文件以何种编码格式保存?它都是utf-8,如果我直接在其中添加utf-8编码字符(例如æå),则索引文件在客户端上显示良好。似乎在使用socket.io的传输中发生了一些事情。请改用
socket.emit('msg',{text:'æå'。charCodeAt(0).toString(16)}),警报是什么?这是什么-它输出“fffd”@jornare谢谢,问题很明显现在我想我已经检查过两次了,但是很明显Zend Studio欺骗了我:/Thanx!!