超手抜き版の文字コード識別クラスを作ってみた.環境は以下のとおり.
- Squeak3.10beta.7137
 - Squeak-web beta image 0.128
 
対象とするのは日本語のみで, EUC, UTF8, UTF16, JIS (iso-2022-jp), SJIS, Latin1 (iso-8859-1) だけ.
画像のとおり SJIS 半角カナ混じりは表示されるが, EUC 半角カナ混じりは最初の半角カナ以降が表示されない.
- 文字コード判定クラス: NR-TextConversion.1.cs
 - Pier からの読み出し: Pier-Patches-310.4.cs
 
これより古いイメージ等で, 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).
- 文字コード判定クラスは Pier, Seaside からは独立しているので単体で使用することが出来る.
 - 文字コード判定はストリームの先頭 2048 バイトを使用する.このサイズを変更するときは, 
NREncodingRecognizer readLimit: 指定バイト数を実行する. 0 を指定するとストリーム全体を判定対象とする. - ユニット・テスト: NR-Tests-TextConversion.zip
 
; echo '/'; echo get_settings('upload_path'); ?>/2007/08/EncodingRecognizer_s.png)
をを!すばらしい。文字コード判定は他にも使えて便利そうですね。
返信削除