我正在尝试使用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字节序列。
这可能是什么问题?
谢谢,
阿努拉格