iconv binding for golang を書いてみた

golang の DB モノは、なにやら、database api とやらで共通化しようという動きがあるようだ。それに合わせて、書き直したいと思いつつも、日本語エンコード対策に手をだしてしまった。21世紀になっても、政権交代しても、UTF-8 ですべて片づくというわけにはいかないものだ。

ということで、まずは、iconvでやってみた。本当は nkf にしたかったが、複雑だったので、あきらめた。


github: go-iconv


しかし、iconv でも、些細なことにはまってしまった。

iconv(libiconv) を使うときの一般的な注意点:

  • iconv_open()は toencode, fromencode の順である。
  • ポインタでわたすのはバッファと、バイト長。
  • ポインタで戻ってくるのはバッファと、エンコード成立回数
  • malloc() とか事前にしておくこと。

go-iconv では、このへんはゴニョゴニョしてある。しかし、もっとちゃんと書き直すつもり。