使用iconv C ++清理UTF-8缓冲区

时间:2013-06-10 20:02:35

标签: unicode utf-8 iconv

我正在尝试使用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字节序列。

这可能是什么问题?

谢谢,

阿努拉格

0 个答案:

没有答案