[mayaa-user:708] Re: WebSphere6.1でsun.io.MalformedInputException

suga [E-MAIL ADDRESS DELETED]
2008年 11月 20日 (木) 05:58:25 JST


suga です。

koichik さん、ありがとうございます。
助かりました。

> ・抜本的対策
>
> 現在 Mayaa が Neko HTML に設定するデフォルト
> エンコーディングは UTF-8 固定ですが,これを
> 設定で変更できるようにするのがよいかと.

そうですね、設定できるようにしようと思います。

-- 
suga ( [E-MAIL ADDRESS DELETED] )



2008/11/19 Koichi Kobayashi <[E-MAIL ADDRESS DELETED]>:
> 小林 (koichik) です.
>
> Date:    Tue, 18 Nov 2008 10:13:12 +0900
> From:    [E-MAIL ADDRESS DELETED]
> To:      [E-MAIL ADDRESS DELETED]
> Subject: [mayaa-user:705] Re: WebSphere6.1でsun.io.MalformedInputException
>
>> 調査したマシンは、Windows2000です。
>
> [mayaa-user:701] の情報は関係なかったようですね.
>
> ともあれ (JW),状況が理解できました.
> IBM JDK + Neko HTML + Mayaa の組み合わせで
> 起きる現象です.
>
> ・IBM JDK の挙動
>
> UTF-8 のバイト列から String の内部表現である
> UTF-16 に変換する際,不正なバイトがあると
> IBM JDK は MalformedInputException をスロー
> します.
> # Sun の JDK はスローしません.
>
> 例えば Shift_JIS で保存された日本語を含む
> ファイルを FileReader で UTF-8 として
> 読み込むと,IBM JDK では例外となります.
>
> ・Neko HTML の挙動
>
> Neko は最初にデフォルトエンコーディングで
> InputStreamReader をインスタンス化し,
> バッファイサイズ (2048 文字) 分読み込みます.
> そして <meta> によるエンコーディングの指定が
> 見つかると,そのエンコーディングで
> InputStreamReader をインスタンス化し直します.
> Neko 自身が持っているデフォルトエンコーディングは
> Windows-1252 (ISO 8859-1 の上位集合) です.
>
> ・Mayaa の挙動
>
> Mayaa は Neko の HTML パーサを構築する際,
> デフォルトエンコーディングに UTF-8 を
> 設定します.
>
> TemplateParser.TemplateParserConfiguration の
> コンストラクタ
> ----------------------------------------------------------------------
> /* テンプレート上にエンコーディング指定がなければUTF-8と見なす */
> setProperty(TemplateScanner.HTML_DEFAULT_ENCODING, TEMPLATE_DEFAULT_CHARSET);
> ----------------------------------------------------------------------
>
> ・IBM JDK + Neko HTML + Mayaa を組み合わせた場合
>
> Neko HTML は Mayaa から設定された UTF-8 で
> InputStreamReader をインスタンス化し,バッファ
> サイズ (2048 文字) 分読み込みます.
> その中に UTF-8 として不正なバイトがあると,
> IBM JDK は MalformedInputException をスロー
> します.
>
> Shift_JIS で保存された HTML の最初の 2048 文字に
> 日本語が含まれると例外となります.
> Unicode エスケープしていれば回避できます.
> <link> や <script>,空白 (笑) 等で最初の
> 2048 文字に日本語が出てこないようにしても
> 回避できます (<title> は <head> の後の方に書く).
>
> ・抜本的対策
>
> 現在 Mayaa が Neko HTML に設定するデフォルト
> エンコーディングは UTF-8 固定ですが,これを
> 設定で変更できるようにするのがよいかと.
>
>
> --
> <component name="koichik">
>    <property name="fullName">"Koichi Kobayashi"</property>
>    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
>    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
> </component>
>
> _______________________________________________
> mayaa-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/mayaa-user
>


mayaa-user メーリングリストの案内