我应该使用UTF-8通过网络发送数据吗
Should I use UTF-8 to send data over the network?
WinAPI使用UTF-16LE编码,所以如果我调用了一些返回字符串的WinAPI函数,它将以UTF-16LE编码的形式返回。
因此,我正在考虑在程序中使用UTF-16LE编码字符串,当需要通过网络发送数据时,我将其转换为UTF-8,另一方面,我将它转换回UTF-16LE。这样可以减少要发送的数据量。
我不应该那样做是有原因的吗?
使用UTF-8编码,您将使用:
- ASCII字符为1字节
- U+0000和U+07FF之间的unicode字符为2个字节
- 必要时增加字节
因此,如果你的文本是西方语言,在大多数情况下,UTF-8编码的文本可能比UTF-16LE编码的文本更短:西方字母编码在U-0000和U-0590之间。
相反,如果你的文本是亚洲人,那么UTF8编码可能会大大夸大你的数据。亚洲字符集超过U+7FF,因此需要至少3个字节的
在UTF8无处不在的文章中,您可以找到一些关于文本编码长度的(基本)统计信息,以及支持使用UTF8的其他参数。
对于网络,我想到的一个问题是,UTF8表示在所有平台上都是相同的表示,而对于UTF16,根据操作系统和CPU架构,您有LE和BE。
相关文章:
- 将传入的网络"char*"数据转换为"uint8_t"并返回的安全方法是什么?
- 在处理网络、二进制数据和序列化时应使用流或容器
- 使用在R中训练的神经网络来预测C 中的新数据
- Boost Asio网络发送/接收是否具有任何形式的数据完整性保证
- 从网络数据包复制一串 wchar 时访问冲突
- 从网络C++接收数据
- 使用 UDP 协议从 Windows 套接字发送到 Qt 套接字的网络数据包上的结构编码和解码
- 我的神经网络只学习一些数据集
- 计算差异数据并通过网络发送的最佳方式是什么
- 在网络上传输数据
- 使用C 中的套接字通过网络发送音频数据
- 跨网络发送数据的最快的C/C++技术
- 使用SFML验证实时网络上发送的数据包
- 我应该使用UTF-8通过网络发送数据吗
- C/C++ 技术涉及非常快速地跨网络发送数据
- printf网络数据
- 对于tanh激活函数神经网络,对负/非数值数据进行归一化的最佳方法是什么
- 神经网络不学习-MNIST数据-手写识别
- 安装ndnSIM 2.0(名称数据网络)
- 处理大数据网络文件的高效算法,用于计算n个最近节点