ぐる式 (貳) より引っ越し作業中.未完.

2007年8月8日水曜日

Squeak: Pier #7 超手抜き版文字コード判定

超手抜き版の文字コード識別クラスを作ってみた.環境は以下のとおり.

  • Squeak3.10beta.7137
  • Squeak-web beta image 0.128
  • EncodingRecognizer

対象とするのは日本語のみで, EUC, UTF8, UTF16, JIS (iso-2022-jp), SJIS, Latin1 (iso-8859-1) だけ.

画像のとおり SJIS 半角カナ混じりは表示されるが, EUC 半角カナ混じりは最初の半角カナ以降が表示されない.

これより古いイメージ等で, Pier-Seaside-lr.181 を使っている場合 (具体的には PRViewRenderer>>visitFile が下記のもの) がある.

visitFile: anObject	| file url |	file := anObject file ifNil: [ ^ self ].	file isText		ifTrue: [ ^ html preformatted: anObject contents ].	url := file urlOn: html.	file isImage		ifTrue: [ ^ html image url: url; altText: anObject title ].	html anchor url: url; with: anObject title

この場合は Pier-Patches-310.4.cs の替わりに, Pier-Patches-310.3.cs をインストール.ここは直訴が通って Pier-Seaside-lr.182 で修正された (Pier-All-lr.219.mcz).

  1. 文字コード判定クラスは Pier, Seaside からは独立しているので単体で使用することが出来る.
  2. 文字コード判定はストリームの先頭 2048 バイトを使用する.このサイズを変更するときは, NREncodingRecognizer readLimit: 指定バイト数 を実行する. 0 を指定するとストリーム全体を判定対象とする.
  3. ユニット・テスト: NR-Tests-TextConversion.zip

1 件のコメント:

  1. をを!すばらしい。文字コード判定は他にも使えて便利そうですね。

    返信削除