replace or fallback

iconv(3)レベルで考慮すべき問題

前回の続きiconv(3)レベルでも考慮すべき問題があるのかな」とのことですが、あるのではないかなぁ。置換文字に置き換えて続行するか、エラーを出して止めるかは用途によって変わるでしょう。例えば変換してみてエラーが出たら文字参照を返したい場合は、iconv() が非可逆変換が行われた回数を返しても何の役にも立ちませんから。もっとも、それを POSIX locale だとか iconv() でやるべきかは別問題で「IBM ICU でも使えば?」っていう身も蓋も無い意見が(ry いや、wchar_t だと文字コードの情報が落ちるのがなぁ、とかは思うわけで。
HTML とかを思い出すと、仕様には従うことに意義があると思っているので、便利な動作だぜ hehe とか言って足並み乱すのは某MSと同類(ぉ 独自のコマンド追加はいいとしても。

変換の流れ

jcode.pl なんかは multibyte → multibyte でしたけれど、nkf は違いますね。

 multibyte → *_getc(char) → int32[3] (*_iconv)
 → int32[2] (*_oconv) → char (*_putc) → multibyte

という流れになってます。