我使用nodejs作为我的后端,并使用套接字作为我的应用程序的短信部分。我研究了如何使用套接字并发现了一个有趣的事实。
通过套接字传输的数据(在我的例子中是字符串)必须采用 utf-8 编码。这个 utf-8 编码有什么用,为什么需要它?
最佳答案
..The data being transferred by a socket ... has to be utf-8 encoded..
这并不完全正确。
套接字只能传输字节,因此它需要获取字节。字符串不是字节序列,而是字符序列。要通过套接字传输字符串,需要首先将其表示为字节序列,并在传输后解码回来。如果您已经有字节(例如图像的二进制表示形式),则不需要额外的编码和解码。
有多种方式可以将字符表示为字节,即“字符编码”。 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!) .
关于javascript - 诸如socket通信之类的东西需要utf-8编码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55986517/