6

私は node.js を使用しており、次のコードがあります。

var server = net.createServer(function(socket) {
socket.on('data', function(d) {
console.log(d);}}

次が出力されることがわかります。

<Buffer 47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31 0..>

ローカルホストで接続を開いても。その理由は何ですか?httpリクエストを取得するように変更するにはどうすればよいですか?

4

1 に答える 1

10

docsによるとsetEncoding()、文字列を受け取るメソッドでエンコーディングを指定する必要があります。
そうしないと、Node は必要なエンコーディングがわからないため、未加工のデータを含む Buffer を受け取ることになり、Node は非常に低レベルのネットワークを処理します。

例えば:

var server = net.createServer(function(socket) {
  socket.setEncoding("utf8");
  socket.on('data', function(d) {
    console.log(d); // will be string
  }
}

したくない場合は、いつでも呼び出すことができますtoString()

var server = net.createServer(function(socket) {
  socket.on('data', function(d) {
    console.log(d.toString());
  }
}
于 2013-06-14T11:30:12.513 に答える