2006-09 / 2006-09-08

前のエントリ: 今日の戦利品 [ぬいぐるみ]
次のエントリ: ロッテ戦 @ ヤフードーム [diary]

BCCで文字コード変換
2006-09-08-1 / カテゴリ: [win][programming][c] / [permlink]

とゆーアレで。
普段ならPerlでJcodeなり使ってとっとこやるとこだけど、妹さん(winユーザ)からアプリ(数千通のメールの集計処理)のリクエストなのでPerlインタプリタは候補からはずれる。
BCC(Borland C++ Compiler)で文字コードを変更する必要が。
ざっと検索した感じでは、iconvのWindows用DLLが使えそう。

Libiconv DLL 1.9.1 for Windowsをダウンロードし、ググって出てきたこのページを参考にテストコードを書いてみるがリンクできず…
Error: 外部シンボル '_libiconv_open' が未解決(C:\DOCUMENTS AND SETTINGS\ZAKI\MY DOCUMENTS\PROG\C\ICONV\TEST.OBJ が参照)
Error: 外部シンボル '_libiconv' が未解決(C:\DOCUMENTS AND SETTINGS\ZAKI\MY DOCUMENTS\PROG\C\ICONV\TEST.OBJ が参照)
Error: 外部シンボル '_libiconv_close' が未解決(C:\DOCUMENTS AND SETTINGS\ZAKI\MY DOCUMENTS\PROG\C\ICONV\TEST.OBJ が参照)
パスが通ってないのかと思いきや(作業ディレクトリ・Cソース・iconv.{h,lib,dll}は全部同じ階層)、その通り(汗)
makeファイル作った方がいいんだろうケド、テストコードなのでとりあえず
> bcc32 test.c iconv.lib
すると
Error: 'C:\DOCUMENTS AND SETTINGS\ZAKI\MY DOCUMENTS\PROG\C\ICONV\ICONV.LIB' contains invalid OMF record, type 0x21 (possibly COFF)
ん、、やっぱリンクできない…
で、ググって見るとこのページの方法でリンクできた。
> rename iconv.lib iconv.lib.org
> coff2omf iconv.lib.org iconv.lib
> bcc32 test.c iconv.lib
で、ようやく実行するも、変換できない…
ようやく(今更ながら)マニュアルを見ると、iconv_open の引数に指定するコード名が"SHIFT_JIS"でなく"SJIS"になってたので修正。(お手本が違ってる…)
    ic = iconv_open("SHIFT_JIS", "ISO-2022-JP");
        if (ic == (iconv_t)-1) {
        printf("iconv error\n");
        return -1;
    }
    iconv(ic, &ptr_in, &mybufsz, &ptr_out, &mybufsz);
    iconv_close(ic);
こんな感じ。
前のエントリ: 今日の戦利品 [ぬいぐるみ]
次のエントリ: ロッテ戦 @ ヤフードーム [diary]

2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12

最終更新時間: 2013-05-02 16:12