2

我正在尝试使用 iconv 清理 utf-8 编码的缓冲区并删除所有无效的 utf-8 代码点。下面是我的代码片段:

iconv_t conv = iconv_open("UTF-8//IGNORE","UTF-8");
iconvctl(conv, ICONV_SET_DISCARD_ILSEQ, &flag);
iconv(conv, &inbuf, &len, &outbuf, &outlen);
iconv_close(conv);

我注意到它无法删除 0xD800-0xDfff (代理对)范围内的代码点,即使这些代码点不是有效的 utf-8 代码点。

其他无效代码点(例如超过 0x10FFFF 和错误/损坏的 utf-8 字节序列)已成功清除。

这里可能是什么问题?

谢谢,

阿努拉格

4

0 回答 0