什么是 utf-8 编码对套接字通信之类的东西的需求?

Ees*_*nir 1 javascript sockets utf-8 node.js socket.io

我使用 nodejs 作为我的后端,并使用套接字作为我应用程序的短信部分。我研究了使用套接字并发现了一个有趣的事实。

由套接字传输的数据(在我的例子中是一个字符串)必须是 utf-8 编码的。这个 utf-8 编码用于什么,为什么需要它?

Ste*_*ich 5

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

这并不完全正确。

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

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

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

有关更多信息,我建议阅读每个软件开发人员绝对、肯定必须了解 Unicode 和字符集(没有借口!)的绝对最小值