我必须使用一种发送以零结尾的字符串的方法:
ssize_t send_utf8 (char *buffer)
其中 buffer 是编码为“utf-8”或“ISO-8859-1”的字符串。 该函数使用另一个发送缓冲区的函数发送一个以零结尾的字符串(该函数是透明的,缓冲区可以是二进制数据):
ssize_t send (void *buffer, size_t num)
其中buffer是要发送的缓冲区,num是字节数。
我已经通过这种方式实现了,但在调用 send() 方法之前,我必须将缓冲区编码为 UTF-8。
ssize_t send_utf8 (char *buffer) {
// UTF-8 conversion?
net_http_send(buffer, strlen(buffer));
return connection->content_len; // number of bytes written
}
我应该使用任何库还是有快速方法来转换此缓冲区? 提前致谢。
最佳答案
UTF-8 已经是“二进制”了,因为它由多个字节表示,因此无需“编码”。
但是,如果您想发送/接收缓冲区,则需要有一个定义缓冲区开始/结束的协议(protocol)。对于 UTF-8,这将是零终止字节。对于缓冲区,正常的约定是在其前面添加一个长度字段作为前缀,而不是在末尾搜索零字节,但也存在其他约定。
因此,如何执行此操作并不取决于 UTF-8,而是取决于缓冲区发送约定。
关于c - 如何转换UTF-8字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23814762/