libjcode ライブラリパッケージ	1.00 版/ 1996

ご存知の通り、日本語を表すための文字コードは、JIS(ISO-2022)、EUC、SJIS  の
３種類がよく使われています。これは、パソコン間で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)
	平仮名 <--> カタカナ 
	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
