libjcode ライブラリパッケージ 1.00 版/ 1996 ご存知の通り、日本語を表すための文字コードは、JIS(ISO-2022)、EUC、SJIS の 3種類がよく使われています。これは、パソコン間でSJISの文章をやり取りする時 は、何にも問題のない話でした。しかし、WWW のようなインターネット時代になる と、様々な文字コードが混在してしまい、大きな混乱を招く結果になります。 そんな中で多くのプログラマーが日本語コード処理の煩雑さの罠に陥らなくて済む ようにまとめたのが、この C言語用の libjcode ライブラリです。 -- libjcode パッケージの特徴 ------------------------------------------------ 1. インターネットでの利用を前提とした日本語コード変換ライブラリ 2. SJIS 半角カナを全角に変換可能 -- パッケージの中身 --------------------------------------------------------- / README このファイル Makefile Unix 版 Makefile config.h 設定用 #include ファイル libjcode.c JIS、SJIS、EUCの変換 detect.c コード判定用 sample.c 簡単なサンプルプログラム jlib.h ライブラリ用 #include ファイル Doc/ rfc1468.txt RFC1468 "Japanese Character Encoding for Internet Messages." rfc1554.txt RFC1554 "ISO-2022-JP-2: Multilingual Extension of ISO-2022-JP" -- 利用上の注意 ------------------------------------------------------------- libjcode は、完全にフリーなライブラリです。インターネットにおける日本語環境 の改善を最終目標にしております。日本語コードの変換を行いたい方なら誰でも、 自由に改良して、自分のプログラムに合わせて組み込むことができます。 ただし、利用にする場合は次の条件を守ってください。 1. libjcode を利用したために如何なる損害が生じても作者には一切の責任を 取りません。 2. 国立大学のコンピュータ資源を使っているので、著作権表示、 (C) Kuramitsu Kimio, Tokyo Univ. 1996-97 を念のために残しておいてください。 ライブラリ利用中にバグを発見し直された方、より効率のよりアルゴリズムを実装 なさった方は、それを作者に送って頂けると、libjcode としてもより信頼性の高い ライブラリへと成長できます。よろしくお願いします。 また、libjcodeを組み込んだソフトウエアの名前も教えていただけると、実際の実 装例として、紹介したいと思います。 -- 使い方 ------------------------------------------------------------------- 1. まず、make によって、libjcode.a ライブラリを作ります。 config.h を直すことで、多少機能を変えることができますが、ソースコード を読んだ方が早いでしょう。 2. サンプルプログラム sample.c と Makefile を見ると、このライブラリをどの ように組み込むか参考にしてください。 -- 動作確認環境 ------------------------------------------------------------- ANSI C コンパイラを使っていれば、普通にコンパイルできるはずです。 Solaris 2.5 (Sparc) with gcc 2.7.2 Linux 2.0 with gcc 2.7.2 -- ライブラリの一覧 --------------------------------------------------------- 普通に使えるライブラリ関数は、jlib.h ヘッダファイルに書かれています。最初 に #include "jlib.h" を追加します。 #define ディレクティブの内容 #define ASCII ASCII コード #define JIS iso-2022-jp コード #define EUC x-euc-jp コード #define SJIS x-sjis コード 関数: extern int detectKanjiCode(char *str); 文字列 str のコードを判定します。 返り値は、ASCII, JIS, EUC, SJIS のどれかです。 extern char *toStringJIS(char *str); 文字列 str をJIS コードに変換します。 extern char *toStringEUC(char *str); 文字列 str をEUC コードに変換します。 extern char *toStringSJIS(char *str); 文字列 str をSJIS コードに変換します。 -- 知られている問題点 ------------------------------------------------------- 半角SJISが含まれたテキストを想定しているので、EUC と SJIS の自動判定が かなり弱い。 -- 今後の予定 --------------------------------------------------------------- 確実にやろうと思っていること。 JIS X 0212-1990 (俗称 補助漢字)の変換に対応 MIME ヘッダのエンコード/デコード できたらやりたいこと(CGI 向けライブラリ) 全角 --> 半角 (例 foo@mail.com --> foo@mail.com) 平仮名 <--> カタカナ ROMAN 字 --> かな (Kuramitsu --> くらみつ) 挑戦したいこと。 SJIS と ISO-8859-1(laten) の自動識別 道義的に悩むところ Unicode への対応 -- 歴史 --------------------------------------------------------------------- libjcode を作る直接のきっかけとなったのは、Thomus Boutell 著の "CGI Programming with C and Perl"(Addison-Wesley)に付属するサンプルCGIプロ グラムを日本語の入力を受け付けるようにするために、漢字コード変換に触れる必 要性がありました。ところが、Perl用には優れた漢字変換のライブラリが存在しま したが、残念ながらC版には、優れたライブラリが手に入れることができませんで した。 そこで、Ken Lunde 著の「日本語情報処理」(O'Reilly)を参考にライブラリ作成を 始めることにしました。 1996/12/10 ホームページ上で公開開始。 http://www.lib.m.u-tokyo.ac.jp/~kiki/libjcode/ 1996/12/19 "CGI Programming with C and Perl5"の日本語版付録CD-ROM付録 として、libjcode-1.00 配布開始 -- 謝辞 --------------------------------------------------------------------- 坂村研究室の先輩である川幡 太一(kawabata@is.s.u-tokyo.ac.jp)さんには、日本 語処理という狭い観点にとらわれず、広く多国語環境や処理について様々な助言や アドバイスをして頂きました。また、本ライブラリ実現のためのバグ取りも手伝っ て頂きました。 --- 本ライブラリを活用して多くのCGIプログラムやWindows/Macintosh 用のフリーウ エア、また商用アプリケーションの日本語版が正しく漢字コードを扱えるように なって頂けれれば、幸いです。 1996年 12月 倉光 君郎 / Kuramitsu Kimio kiki@is.s.u-tokyo.ac.jp