[Seasar-user:13228] Re: [S2JDBC]SQLファイルをUnicodeサイン(BOM)を付けてUTF-8で保存するとエラー
出羽 健一
[E-MAIL ADDRESS DELETED]
2008年 3月 11日 (火) 13:07:52 JST
小林 (koichik)さま
出羽です、いつもお世話になっております。
詳細な説明を頂き、有難うございます。
お蔭様で、状況が良く理解できました。
> と言いつつ,先頭の U+FEFF を取り除くことは
> 簡単だし,そうした方が使う人にとって都合が
> いいならそうするのが Seasar っぽいのかも
> しれませんが.
私も個人的には仕様や規格的に正しいというよりも、
実務的な方を好むので、先頭の U+FEFF を取り除くほうが
いいなぁと思います。
PS. ちなみに私が試したエディタは
EmEditorとかEmEditorとかEmEditorとかでした。
> -----Original Message-----
> From: [E-MAIL ADDRESS DELETED]
> [mailto:[E-MAIL ADDRESS DELETED]] On Behalf Of Koichi Kobayashi
> Sent: Sunday, March 09, 2008 5:01 AM
> To: [E-MAIL ADDRESS DELETED]
> Subject: [Seasar-user:13199] Re: [S2JDBC]SQLファイルをUnicodeサイン(BOM)
> を付けてUTF-8で保存するとエラー
>
> 小林 (koichik) です.
>
> Date: Sun, 9 Mar 2008 00:59:59 +0900
> From: 出羽 健一 <[E-MAIL ADDRESS DELETED]>
> To: <[E-MAIL ADDRESS DELETED]>
> Subject: [Seasar-user:13197] [S2JDBC]SQLファイルをUnicodeサイン(BOM)を付
> けてUTF-8で保存するとエラー
>
> > S2JDBC(s2-tiger 2.4.22)でSQLファイルを
> > Unicodeサイン(BOM)を付けてUTF-8で保存すると
> > 例外が発生してしまいます。
> >
> > 上記の場合でも動作するようにするか、
> > それとも、分かりやすいエラーメッセージを表示するなどの
> > 改善を検討して頂きたいので、よろしくお願いします。
>
> まず,理屈の上ではその U+FEFF は BOM ではなく,
> ZERO WIDTH NO-BREAK SPACE であり,一種の空白です.
>
> 一種の空白に過ぎないので,S2JDBC は通常の空白と
> 同じようにそのまま SQL の一部として JDBC ドライバに
> 渡します.
> これは RFC3629 の次の記述とも合致します.
>
> ----------------------------------------------------------------------
> A protocol SHOULD forbid use of U+FEFF as a signature for those
> textual protocol elements that the protocol mandates to be always
> UTF-8, the signature function being totally useless in those
> cases.
> ----------------------------------------------------------------------
>
> S2JDBC の SQL ファイルのエンコーディングは
> UTF-8 決め打ちになっているので,その場合に
> U+FEFF を signature (BOM) として使うことは,
> 禁止すべき (SHOULD forbid) なのです.
>
> で,JDBC ドライバが ZERO WIDTH NO-BREAK SPACE を
> SQL の一部として扱えるなら動作するだろうし,
> 扱えないなら例外になるでしょう.
> 例外になる場合,メッセージの分かりやすさは
> JDBC ドライバに依存します.
> S2JDBC としてはそれだけです.
>
> ただし,S2 は伝統的 (?) に後処理で例外が発生すると
> 元の例外が失われてしまうので,そのために原因が
> 分かりにくくなっているならそこは改善の余地ありかも.
>
> ともあれ (JW),ZERO WIDTH NO-BREAK SPACE を
> 扱えない JDBC ドライバを使うなら,SQL ファイルに
> ZERO WIDTH NO-BREAK SPACE を入れないように
> すべきです.
>
> これは,日本語を扱えない JDBC ドライバを使うなら
> SQL 中に日本語を含めないようにしてください,と
> いうのと同じです.
>
> 個人的には UTF-8 で BOM として U+FEFF を強制的に
> 付けるような腐ったエディタは捨ててしまうことを
> オススメします.
> メモ帳とかメモ帳とかメモ帳とか.
> 他にもあるなら片っ端から捨ててしまいましょう.
> UTF-8N とか意味不明なこと言ってるエディタも
> 捨てましょう.
>
>
> と言いつつ,先頭の U+FEFF を取り除くことは
> 簡単だし,そうした方が使う人にとって都合が
> いいならそうするのが Seasar っぽいのかも
> しれませんが.
>
>
> --
> <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>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
Seasar-user メーリングリストの案内