javascript - 诸如socket通信之类的东西需要utf-8编码吗?

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

我使用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/

相关文章:

javascript - 如何捕获 iframe 中下载的文件?

node.js - 如何在运行时更改文件夹Winston日志?

node.js - 我的网络中的设备/计算机发现

c# - 在 C# Tcp 服务器中调试可能孤立的套接字

c - 套接字编程 : UDP Client-Server in C

python - 如何计算子进程发出的每个 UDP 数据包?

javascript - 任何视频播放器都无法使用临时视频源文件寻找视频

javascript - 在jquery中选择id内的元素

javascript - 如何在chrome中查看window对象内的所有对象属性详细信息?

node.js - 如何在 node.js 中使用 Passport 访问序列化用户