= pykf: Kanji code filter =

pykfは、ShiftJIS, EUC-JP, JISコードを相互に変換するためのモジュールです。


== インストール方法 ==

python setup.py install

== リファレンス ==

setstrict(bool):
    strictモードを指定します。
    strictモードでは、guess()によるエンコーディング推定時、不正な文字列がある場合
    にはERRORを返します。デフォルトはFalseです。

getstrict(bool):
    現在のstrictモードを返します。
    
setdefault(encoding):
    encoding=UNKNOWNを指定して文字列変換を行うとき、guess()でエンコーディング
    を推定できなかった場合のデフォルトエンコーディングを指定します。
    encodingとしてUNKNOWN, SJIS, EUC, JISのいずれかを指定します。UNKNOWNが指定
    された場合、guess()が失敗すると{{{IllegalEncoding}}}例外が発生します。
    UNKNOWN以外の場合でも、strictモードでは不正な文字列を検出時にデフォルトエンコー
    ディングは使用せず、{{{IllegalEncoding}}}例外が発生します。

getdefault():
    現在のデフォルトエンコーディングを指定します。未指定時、Win32/Macintoshでは
    SJIS、それ以外ではEUCとなります。

guess(s, [strict]):
    入力文字列sのエンコーディングを推定します。戻り値はUNKNOWN, ASCII, SJIS, 
    EUC, JIS, UTF8, UTF16_LE, UTF16_BE, ERRORのいずれかです。strictを省略した
    場合、現在のstrictモードで推定を行います。

tojis(s [,encodin=UNKNOWN], [strict], [j0208=False]):
    入力文字列sをJISに変換します。encodingとしてUNKNOWN, SJIS, EUC, JISの
    いずれかを指定します。UNKNOWNが指定された場合、sのエンコーディングを
    推定して変換を行います。strictを省略した場合、現在のstrictモードで推定
    を行います。j0208をTrueにすると、JIS X 0213の文字でもESC $ Bで呼び出し
    ます。

toeuc(s [,encoding=UNKNOWN]):
    入力文字列sをEUC-JPに変換します。encodingとしてUNKNOWN, SJIS, EUC,
    JISのいずれかを指定します。UNKNOWNが指定された場合、sのエンコーディ
    ングを推定して変換を行います。strictを省略した場合、現在のstrictモー
    ドで推定を行います。

tosjis(s [,encoding=UNKNOWN]):
    入力文字列sをSJISに変換します。encodingとしてUNKNOWN, SJIS, EUC, JISの
    いずれかを指定します。UNKNOWNが指定された場合、sのエンコーディングを
    推定して変換を行います。strictを省略した場合、現在のstrictモードで推定
    を行います。

tofull_kana(s [,encoding=UNKNOWN]):
    入力文字列s中の半角カナを全角に変換します。encodingとしてUNKNOWN, SJIS, 
    EUCのいずれかを指定します。(JISの変換は未サポート)
    UNKNOWNが指定された場合、sのエンコーディングを推定して変換を行います。
    strictを省略した場合、現在のstrictモードで推定を行います。    

tohalf_kana(s [,encoding=UNKNOWN]):
    入力文字列s中の全角カナを半角に変換します。encodingとしてUNKNOWN, SJIS, 
    EUCのいずれかを指定します。(JISの変換は未サポート)
    UNKNOWNが指定された場合、sのエンコーディングを推定して変換を行います。
    strictを省略した場合、現在のstrictモードで推定を行います。    

split(s [,encoding=UNKNOWN]):
    入力文字列sを、文字のリストに変換します。encodingとしてUNKNOWN, SJIS, 
    EUC, JISのいずれかを指定します。UNKNOWNが指定された場合、sのエンコー
    ディングを推定して変換を行います。strictを省略した場合、現在のstrict
    モードで推定を行います。


== sample ==
{{{
import pykf
s = "あいうえお"
s1 = pykf.tojis(s)
s2 = pykf.tosjis(s1, pykf.JIS)
assert(s2 == s)
}}}

== メモ ==

pykfは、マイクロソフト漢字コードの拡張文字を変換するため、JIS X 0213を
中途半端にサポートしています。規格票を見ないで書いてますので、問題点も
多いかと思いますが...
尚、JIS X 0213のコード表は、JISX0213 {{{InfoCenter}}}
    http://www.jca.apc.org/~earthian/aozora/0213.html
のデータを使わせていただきました。


 * SJISのIBM拡張漢字等は、主要WebブラウザであるInternet Explorer/Mozillaに
 準拠し、JIS X 0213 1面(第三水準)に変換します。このため、OSF 日本ベンダ
 協議会の「日本語 EUC ・シフト JIS 間コード変換仕様とコード系 実態調査」
 (*1) に準拠したライブラリ・アプリケーションなどとは変換結果が異なります。

 * SJIS/EUC->JIS変換時、JIS X 0208で定義された文字は、JIS X 0213 附属書2 
 4.1(e)で禁止されている文字であっても、ESC $ B で呼び出します。

 * 第四水準の変換はサポートしていません。

 * ユーザ定義外字(SJIS 0xF040-0xF9FC)は、全て'〓'に変換します。

(*1) http://www.opengroup.or.jp/jvc/cde/sjis-euc.html


== バージョン情報 ==

2010/4/8 0.3.5
 * setuptoolsに対応

2003/12/11 0.3.4
 * JISへの変換にj0208オプションを追加。
 * strictモードが正しく指定できていなかったのを修正。

2003/9/6 0.3.3
 * JISへの変換時、末尾でG0にASCIIを呼び出すように修正。

2003/8/13 0.3.2
 * 多くのケースでEUC文字列がSJISと判定されていたのを修正。

2003/8/3 0.3.1
 * strictオプションを追加

2002/12/22 0.3.0
 * メモリリークを修正。
 * tofull_kana(), tohalf_kana(), split()を追加。

2002/08/11 0.2.2
 * 入力文字列の長さが0の時、エラーとなる場合があったのを修正。

2002/04/18 0.2.1
 * setdefault(), getdefault()を追加。

2002/04/08 0.2.0
 * utf-8の検出機能
 * MS漢字の機種依存文字をJIS X 0213に変換するように変更。

2002/03/02 0.1.0
 * 初期公開

== ライセンス ==
{{{
Japanese Kanji filter module
    Copyright (c) 2002-2003, Atsuo Ishimoto.  All rights reserved. 

Permission to use, copy, modify, and distribute this software and its 
documentation for any purpose and without fee is hereby granted, provided that
the above copyright notice appear in all copies and that both that copyright
notice and this permission notice appear in supporting documentation, and 
that the name of Atsuo Ishimoto not be used in advertising or publicity 
pertaining to distribution of the software without specific, written prior 
permission. 

ATSUO ISHIMOTO DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
EVENT SHALL ATSUO ISHIMOTO BE LIABLE FOR ANY SPECIAL, INDIRECT OR 
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE. 

---------------------------------------------------------------------
This module is besed on kf.c written by Haruhiko Okumura.
    Copyright (c) 1995-2000 Haruhiko Okumura
    This file may be freely modified/redistributed.

Original kf.c:
    http://www.matsusaka-u.ac.jp/~okumura/kf.html

}}}