c - 如何转换UTF-8字符串?

标签 c utf-8 binary-data data-conversion

我必须使用一种发送以零结尾的字符串的方法:

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/

相关文章:

java - 为什么在以下代码中 Filter Servlet 中捕获二进制数据失败?

c++ - 如何摆脱结构的数据成员之间的填充字节

xcode - 如何指定 XCode 存储编译后的二进制文件的位置?

c - 在简单的添加功能中查找错误

c - 给定字符的大小是多少?

linux - 需要将 UTF8 和 UTF16 .csv 文件转换为 ASCII

c++ - 在SDL_ttf中使用UTF8渲染字体

c - 格式 ‘%d’ 需要类型为 ‘int’ 的参数,但参数 3 的类型为 ‘int *’

conio.h 在 C 中不工作

xml - 无法支持 ColdFusion 生成的 XML 文件中的非 UTF-8 字符