前の画面〕 〔クリックポイント〕 〔最新の一覧〕 〔全て読んだことにする〕〔全て読んだことにして終了〕 〔終了

2486 gd.trm の iconv 対応
2011/3/4(金)18:29 - 竹の - nolm01.iee.niit.ac.jp - 1623 hit(s)

引用する
現在のパスワード


以前 2438 番の記事で、gdlib に関する問題を書きました。

Unix なら gdlib, gnuplot をコンパイルする人が (多くの場合)
ユーザに近いので、それなりに対応が可能ですが、MS-Windows の
ようなバイナリ配布だと、それが、

(a) default の gdlib (日本語は UTF-8 のみ受け付ける) を使用
(b) -DJISX0208 つきの gdlib を使用

のどちらのバイナリなのかを知った上で、png/gif/jpeg terminal
を使用する場合のスクリプトの漢字コードを選ばないといけないわ
けで、それを解消するには gdlib 側の対応が必要である、と 2438
番の記事では書きました。

しかし考えてみれば、バイナリ作成者はどちらの gdlib であるか
を知っているわけですから、コンパイル時に以下のどちらかをフラ
グで選ぶ等で、iconv ライブラリと set encoding 指定でそれなり
に解消する方法があることに気がつきました。

(a) を使う場合:
set encoding sjis の場合は、8bit 文字列を Shift_JIS とみなし
iconv で UTF-8 に変換して通す、それ以外はそのまま通す

(b) を使う場合:
set encoding utf8 の場合は、8bit 文字列を UTF-8 とみなし
iconv で Shift_JIS に変換して通す、それ以外はそのまま通す

これで十分かどうかは議論のあるところだと思いますが、とりあえ
ずそのようなパッチを作ってみました。あくまで、MS-Windows 用
です。

http://takeno.iee.niit.ac.jp/~shige/unix/gnuplot/data/gd-iconv-1.diff

gd.trm の 330 行目付近にフラグがあります。

#define HAVE_ICONV 1 <== iconv を使う場合に指定
#define USE_SJIS 1 <== このパッチを有効にする
#define JIS_GDLIB 1 <== (a) の場合は 0, (b) の場合は 1 に

のようにします。iconv.h が必要ですし、iconv ライブラリをリン
クする必要があります (松岡版は既にリンクされているよう)。


〔ツリー構成〕

【2486】 gd.trm の iconv 対応 2011/3/4(金)18:29 竹の (1520)
┣【2487】 re(1):gd.trm の iconv 対応 2011/3/4(金)22:15 kakuto (319)
┣【2488】 re(1):gd.trm の iconv 対応 2011/3/5(土)06:44 松岡 (367)
┣【2489】 re(2):gd.trm の iconv 対応 2011/3/5(土)06:50 松岡 (214)
┣【2493】 re(3):gd.trm の iconv 対応 2011/3/5(土)15:30 竹の (547)
┣【2495】 re(4):gd.trm の iconv 対応 2011/3/5(土)17:14 kakuto (153)
┣【2497】 re(4):gd.trm の iconv 対応 2011/3/5(土)20:11 松岡 (110)
┣【2500】 re(4):gd.trm の iconv 対応 2011/3/6(日)05:02 松岡 (122)
┣【2501】 re(5):gd.trm の iconv 対応 2011/3/7(月)08:39 竹の (211)
┣【2509】 re(6):gd.trm の iconv 対応 2011/3/17(木)11:38 竹の (340)
┣【2511】 re(7):gd.trm の iconv 対応 2011/3/27(日)13:59 竹の (162)
┣【2512】 re(8):gd.trm の iconv 対応 2011/3/28(月)08:03 松岡 (397)
┣【2491】 re(2):gd.trm の iconv 対応 2011/3/5(土)14:53 竹の (325)

前の画面〕 〔クリックポイント〕 〔最新の一覧〕 〔全て読んだことにする〕〔全て読んだことにして終了〕 〔終了

※ 『クリックポイント』とは一覧上から読み始めた地点を指し、ツリー上の記事を巡回しても、その位置に戻ることができます.