FLAGS

筆者おかあつ 大きな区分 記事の区分 記事の一覧 検索 ツイート

2009年1月22日木曜日

(JAVAネタ) バグの原因をみつけた (mixi05-u459989-200901221618)

ミクシ内で書かれた旧おかあつ日記を紹介します。
(JAVAネタ) バグの原因をみつけた
2009年01月22日16:18
2006年ごろ、非日本語環境において、SWINGを利用したアプリを実行すると、日本語が中国語フォントで表示されるという問題があることに気がついてから以降、長らくこの問題には悩まされていたのだけど、これは実はかなり前にすでに対策方法が提供されているということがわかった。

おかしなことに対策方法は提供されているのに、実際の対策は講じられていない。 まるでコーヒーが飲みたくてスタバにいったのに、コーヒーを買った段階ですっかり満足してコーヒーを受け取り忘れて帰ってしまう僕と同じくらいマヌケだ。

もともと、UNICODEという体系の上では、文字コードだけを見ても日本語か中国語か韓国語か判定できない、ということが問題の根源であるように思う。 似てるいるが同じ文字ではない、同じ文字だが書き方が違うという文字はたくさんあるが、これらが同じ文字に統合されてしまっている。

また全く同じ文字であっても国によって書き方の風習が違うため、表示方法を分けないと見苦しい、という文字も多い。 たとえば、この「。」という文字は中国語だと中央に書くのが習慣だが、日本では右下に寄せるのが習慣だ。 日本語で中央に書かれるととても見苦しいし、中国語でも右下に寄せられると見苦しい。 この文字に限らず、こういう問題を含む漢字はたくさんあるのだそうだ。

これらはそもそも別々なものとして管理するのが妥当なはずだが、同じものとして扱われている。 だから UNICODEだけでは、漢文かな混じりの文章と、中国語の文章を同時に正しく表示することが出来ない。

JAVAはある文字に出会うと、この文字に対応することができる言語を決まった優先順位で検索して表示する。 だから、特殊な処理をしない限り、日本語と中国語を同時に正しく表示することが出来ない。



ちょっと内容は古かったけど、これがきっかけで解決できた。
http://www.alles.or.jp/~torutk/oojava/maneuver/1998/swing/swing_ja.html#doc1_id545


とても核心に迫った英語のドキュメントをたくさん日本語に訳してくれている方のページ。
http://homepage1.nifty.com/algafield/JavaGUIFaq19j.html
  すごい! オリジナルの文章は行方不明になってしまっているので、現在の入手方法はこれ以外ないみたいだ。


この返答を書いた人は日本の方みたいだ
http://forums.sun.com/thread.jspa?threadID=5231848
英語上手いし親切だし詳しい。

コメント一覧
 
出展 2009年01月22日16:18 『(JAVAネタ) バグの原因をみつけた』