JapaneseCodecs version 1.4.8 WindowsCE 用配布パッケージ
============================

02/09/29 20:42  (by Telion)

このパッケージは、梶山民人氏が作成されたPython用の
JapaneseCodecs(日本語の文字コードの取り扱い、及び
各コードの変換が出来るようにする仕組み)の標準配布
パッケージに WindowsCE用のバイナリを付け加えたものです。

CEではメモリー等に制限があるため、現状ではC言語版の
コーデックスのみ作動し、Python版のものは使えません。

ただし、C言語版の方が動作も速くメモリーも食わないので
Python版は必要ではありませんが、梶山氏作成の
標準パーッケージのファイル構成のまま配布しています。


このパッケージを導入することで、CEで標準に作動する
Unicode <-> mbcs(Shift-Jis)の他に、
ユニコードとEUCやJisコードとの変換が出来るようになります。

詳しい使い方などは、Python Japan User's Groupeの記事や
メーリングリストの記録を参照して下さい。

Python JUG
http://www.python.jp/Zope
Python 日本語メーリングリスト保存書庫
http://www.python.jp/pipermail/python-ml-jp/
Python 日本語メーリングリスト検索
http://www.python.jp/cgi-bin/namazu.cgi

また、元のREADMEもご覧下さい。
このCE用のREADMEには、主にCE特有の事柄に付いてのみ
書かれています。

尚、JapaneseCodecs148-CE-mini.zip、をダウンロードされた
場合には、CEで必要なファイルのみが含まれています。
テストスクリプト(CEでは改造しないと動きませんが)や
C 版のソースコードとヘッダーファイル、そして
PurePython版などを含む完全なパッケージをお好みの方は、
JapaneseCodecs148-CE.zipをダウンロードして下さい。



■ CE用インストール方法

CE用Pythonでは、distutilが付いていないため、
手動でインストールして下さい。

まず、Zipファイルを母艦、又はCE上で解凍して下さい。

そして、PythonのLibディレクトリに、site-packagesという
ディレクトリがなければ作成します。

そこに、このパッケージのjapaneseディレクトリと、
japanese.pth をコピーします。
(japaneseの下のpythonとmappings 、そしてtestなどは
 コピーする必要はありません。)

  標準的なディレクトリ構造の例
  Python
   Lib
    site-packages
     japanese
      c
      aliases

japanese/c の中にある、
  _japanese_codecs.pyd.mips
  _japanese_codecs.pyd.arm
のどちらかを、ご使用のCE機のCPUをご確認の上
  _japanese_codecs.pyd
と、リネームして下さい。



次にsite.py の中程にある、
encoding = 'ascii' # comment....
の行をコメントアウトして、
encoding = 'mbcs'
と指定して下さい。

★注意★ CE用のPythonでは、EXEファイルの置いてある場所の
site.pyが使用される可能性が高いです。
ご使用のセッティングで、どのsite.pyが読み込まれているのか?を
ご確認の上で、該当するものを変更して下さい。



次に、Pythonを起動しなおして、
インタープリターで、
>>> import sys
>>> sys.path
とやって、sys.pathにsite-packagesが含まれているか
確認して下さい。

含まれてない場合は、site.pyまたはpcceshell.py
の中で、sys.pathにsite-packagesを追加して下さい。
sys.path.append("xxxxxx\\python\\Lib\\site-packages")



また、インタープリターで、
>>> sys.modules['japanese']
とやって見て下さい。

エラーが出ない場合は、既に日本語コーデックスが使用できる状態に
なっているはずです。

>>> ustr = unicode('あいう')
>>> ustr
u'\u3042\u3044\u3046'

  site.py の中で、通常のエンコーディングを指定していないと
  上記の様にunicode( )のコード指定を省略出来ません。
  その場合でも以下の様に明示的にコードを指定すれば出来ますが、
  site.pyでエンコーディングを指定してしまうのが面倒ないです。
  >>> ustr = unicode('あいう','mbcs')


コーデックスが作動しているか試してみて下さい。
>>> ustr.encode('ujis')
'\xa4\xa2\xa4\xa4\xa4\xa6'
>>> ustr.encode('jis-7')
'\x1b$B$"$$$&\x1b(B'
>>> ustr.encode('sjis')
'\x82\xa0\x82\xa2\x82\xa4'
>>> ustr.encode()  # ustr.encode('mbcs') と同じ
'\x82\xa0\x82\xa2\x82\xa4'


上記の試験でエラーが出る場合は、japanese モジュールが
site.py で自動的にインポートされてないものと思われます。

その場合に、
  1 常にjapaneseCodecs がインポーとされるようにする。
  2 必要な時だけ手動でインポートして使う。
という選択があります。
  (2)の利点は、Pythonの起動が若干早くなるのと、多少
  メモリー消費が少ない点です。
  ただし、インポートせずにコーデックスを呼び出した場合、
  その後でインポートしてもコーデックスが使えないという
  現象が起きたりします。

常にコーデックスを使用する場合には、site.py に
import japanese という一文を入れとけばコーデックスが
登録される筈です。




■ アンインストール

コピーしたファイルを削除して、site.py などを変更した場合には、
それを元に戻して下さい。
site.py を変更する際は、元のファイルを保存しておくか、
あるいは、変更前の行をコメントにして残しておくと良いでしょう。



■ その他のメモとか

基本的に、よく使うのは、Unicode、EUC、Jis、Shift-Jisですが、
CEでは、UnicodeとShift-Jis(mbcs)は、Pythonに備え付けの
コーデックスで相互変換が出来ますので、
Unicode <-> EUC
Unicode <-> Jis
などの場合に、japaneseCodecsは、威力を発揮するでしょう。

ユニコード文字列を作るのは、u"string" 又は、unicode('string')
を使うということになってますが、Python2.2では u"string" と
やった場合には、標準コーデックスが効かない仕様らしいので、
実質的には、unicode('日本語')を使用することになります。

ユニコード文字列が出来てしまえば、正規表現の検索なども
出来ますし、EUCやJisへの変換も簡単です。
  Unicode --> EUC
    euc-string = u-string.encode('ujis')
  EUC --> Unicode
    u-string = unicode(euc-string,'ujis')

  Unicode --> Jis
    jis-string = u-string.encode('jis-7')
  Jis --> Unicode
    u-string = unicode(jis-string,'jis-7')

念のためShift-jisも書いておきます。

  Unicode --> Shif-Jis(mbcs)
    sjis-string = u-string.encode('mbcs')
  Shift-Jis(mbcs) --> Unicode
    u-string = unicode(sjis-string,'mbcs')

site.py でエンコーディングの規定値がmbcsなら、
  Unicode --> Shif-Jis(mbcs)
    sjis-string = u-string.encode()
  Shift-Jis(mbcs) --> Unicode
    u-string = unicode(sjis-string)




■ もう少し詳しい話

上記の 'ujis' 'jis-7' といったコード指定には
他の呼び方も出来ます。詳しくは、japanese/aliases
の __init__.py をご覧下さい。

このエイリアスの設定を変えれば、自分の好みの呼び方を
する事も出来ますが、自作のスクリプトが他の環境で
動かなくなる原因になったりするかもしれないです。

私の個人的な好みでは、
  mbcs --> sjis
  ujis --> euc
  jis-7 --> jis
というのが、しっくり来るのですが、
コーデックスを多用するスクリプトに、
  sjis = 'mbcs'
  euc = 'ujis'
  jis = 'jis-7'
と三行だけ追加すれば、後は
    euc-string = u-string.encode(euc)
    u-string = unicode(euc-string,euc)

    jis-string = u-string.encode(jis)
    u-string = unicode(jis-string,jis)
と簡単に出来る事なので、特に気になりません。


後は、japaneseCodecsに含まれている 'sjis' と、
Python備え付けで作動する 'mbcs' の互換性や
どちらを使った方が早いのか?という点などについては、
まだ調べたりしてませんので、ユーザーや、詳しい方の
ご意見ご報告をお待ちしています。


■ 不具合の報告、問い合わせなど

CEに特有の事柄に付いて:
Telion(CE用バイナリーのコンパイルとこのパッケージの作成)
lac@ccapcable.com
http://pages.ccapcable.com/lac/PythonCEj.html

japaneseCodecs について:
梶山民人氏 
http://www.asahi-net.or.jp/~rd6t-kjym/python/index-ja.html



    Source: geocities.com/telionce/Dist

               ( geocities.com/telionce)