套接字通信之类的东西需要utf-8编码吗?

时间:2019-05-04 20:24:48

标签: javascript node.js sockets utf-8 socket.io

我将nodejs用作后端,并将套接字用于应用程序的文本部分。我研究了有关使用套接字的问题,并发现了一个有趣的事实。

套接字传输的数据(在我的情况下为字符串)必须经过utf-8编码。此utf-8编码用于什么,为什么需要它?

1 个答案:

答案 0 :(得分:3)

  

..套接字传输的数据必须是utf-8编码。

这不是完全正确。

套接字只能传输字节,因此需要获取字节。字符串不是字节序列,而是字符序列。要通过套接字传输字符串,需要先将其表示为字节序列,然后在传输后解码回去。如果您已经有字节(例如图像的二进制表示形式),则无需进行其他编码和解码。

有多种方式可以将字符表示为字节,即“字符编码”。 UTF-8是其中一种编码,其中英文字符仅占一个字节,西方语言中的大多数字符最多占2个字节,等等。还有其他编码,例如UTF-32,其中所有字符占4个字节或ISO-8859-15,其中所有字符仅占用一个字节,但只能代表西方语言中的字符。

由于西方语言的开销很小,因此UTF-8已将其确立为最常见的字符编码。但是,只要您对发送(编码)和接收(解码)都使用相同的编码,也可以使用UTF-32或其他格式。

有关更多信息,我建议阅读The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)