在node.js中计算Content-length头的正确方法是什么

时间:2013-07-29 11:23:30

标签: javascript node.js utf-8 express

我不确定我目前计算内容长度的方法是否正确。使用string.length()计算内容长度有什么含义。在使用node.js时,将字符集设置为utf-8是否意味着什么?

payload = JSON.stringify( payload );

response.header( 'content-type', application/json; charset=utf-8 );
response.header( 'content-length', payload.length );

response.end( payload );

1 个答案:

答案 0 :(得分:49)

Content-Length标头必须是响应正文中的八位字节数。 payload.length是指以字符为单位的字符串长度。某些UTF-8字符包含多个字节。更好的方法是使用http://nodejs.org/api/buffer.html中的Buffer.byteLength(string, [encoding])。这是一个类方法,因此您不必创建任何Buffer实例。