gpt4 book ai didi

c - 通过 C 中的管道读取表情符号

转载 作者:行者123 更新时间:2023-12-04 13:36:01 24 4
gpt4 key购买 nike

我有一个管道,里面写入了无数的字符串。这些字符串是 ASCII 和表情符号的混合。我遇到的问题是我正在像这样阅读它们

char msg[100];
int length = read(fd,&msg,99);
msg[length] =0;

但有时我猜的表情符号是多字节的,它被切成两半,然后当我打印到屏幕上时,我得到菱形问号未知的 UTF-8 符号。

如果有人知道如何防止这种情况发生,请填写;我已经搜索了一段时间了。

最佳答案

如果您正在读取字节块,并希望输出 UTF-8 块,则您必须至少自己进行一些最小的 UTF-8 解码。要检查的最简单条件是查看每个字节(我们称之为 b),看看它是否是一个延续字节:

bool is_cont = (0x80 == (0xC0 & b));

任何不是延续的字节都开始一个序列,该序列一直持续到下一个非延续字节。您需要一个 4 字节的缓冲区来保存块。

关于c - 通过 C 中的管道读取表情符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59571563/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com