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);

有効な utf-8 コードポイントではないにもかかわらず、0xD800 から 0xDfff (サロゲート ペア) の範囲のコード ポイントを削除できないことに気付きました。

0x10FFFF を超えるようなその他の無効なコードポイントや、間違った/壊れた utf-8 バイト シーケンスは正常に消去されます。

ここで何が問題になる可能性がありますか?

ありがとう、

アヌラグ

4

0 に答える 0