iconv binding for golang を書いてみた
golang の DB モノは、なにやら、database api とやらで共通化しようという動きがあるようだ。それに合わせて、書き直したいと思いつつも、日本語エンコード対策に手をだしてしまった。21世紀になっても、政権交代しても、UTF-8 ですべて片づくというわけにはいかないものだ。
ということで、まずは、iconvでやってみた。本当は nkf にしたかったが、複雑だったので、あきらめた。
しかし、iconv でも、些細なことにはまってしまった。
iconv(libiconv) を使うときの一般的な注意点:
- iconv_open()は toencode, fromencode の順である。
- ポインタでわたすのはバッファと、バイト長。
- ポインタで戻ってくるのはバッファと、エンコード成立回数
- malloc() とか事前にしておくこと。
go-iconv では、このへんはゴニョゴニョしてある。しかし、もっとちゃんと書き直すつもり。