根据this page:
'binary'-'latin1'的别名。
但是,由于缺少某些代码点,因此在latin1中二进制无法表示。因此,像我这样的开发人员想要对二进制数据使用NodeJS缓冲区(一种极为常见的用例),可能会期望使用“二进制”作为编码。似乎没有任何文档可以正确解释如何处理二进制数据!我正试图弄清这一点。
所以我的问题是:为什么选择latin1作为二进制的别名?
人们已经提到使用null作为编码将适用于二进制数据。因此有一个后续问题:为什么null和'binary'不会做同样的事情?
答案 0 :(得分:1)
在问题中引用的“二进制”的定义上方,Node文档的“ latin1”的定义不是ISO 8859-1。是:
- 'latin1'-一种将Buffer编码为一字节编码字符串的方法 (由IANA在RFC1345第63页中定义为Latin-1 补充块和C0 / C1控制代码。
RFC 1345中指定的“ latin1”字符集定义了所有256个代码点的映射。在ISO 8859-1映射中,它没有0x00-0x1f和0x7f-0x9f处的孔。
为什么不为null和'binary'做同样的事情?
节点没有null编码。如果您呼叫Buffer.from('foo', null)
,则得到的结果与您呼叫Buffer.from('foo')
的结果相同。也就是说,将应用默认编码。默认编码为'utf8',很明显,该编码可能会产生与'二进制'编码不同的结果。