追記 : UTF-8 にしても動かないケースを Tackn さんに教えてもらいました。ありがとうございました。

NetBeans の JavaFX で日本語を使うとパースがうまくいかない場合があるようです。バグとして以下に登録してあります。
  • 156117: I18N : parsing JavaFX codes with Japanese characters fails
以下の右側のスクリーンショットのように、コードの色付けがおかしくなり、赤いアンダーラインのエラーストライプも付いてしまいます。左側が正しいのですが比べるとわかりますね。この問題が発生するとがくっとパフォーマンスが落ちます。ただコンパイルは通りますし、実行もできます。

NetBeans JavaFX Plugin

いろいろ試してみるとどうやら NetBeans が使うデフォルトのエンコーディングが Shift JIS の時にに発生することがわかりました。ということは Windows では必ず発生してしまいますね。Mac 上では JDK6 で発生します。JDK1.5 ではエンコーディングは UTF-8 なのでこの問題が発生しません。JavaFX のソースコードのエンコーディングは関係ありませんでした。NetBeans が使うエンコーディング、つまり起動した OS のエンコーディングが関係しているのではないかと思っています。

ならばここで -Dfile.encoding=UTF-8 をつけて起動すると...
$ netbeans -J-Dfile.encoding=UTF-8
私の確認するかぎりでは小さいプログラムですがこの問題は発生しませんでした。-J-Dfile.encoding=UTF-8 オプションは etc/netbeans.conf ファイルの netbeans_default_options に書いておくことができます。

もしコードのカラーリングがおかしかったり、エラーでもないのにエラーストライプがついていたら、このオプションを試してみてください。
Comments:

JavaFX エディタの日本語パース現象で困っていたので非常に参考になりました。

しかし、残念ながらカラーリングはやはりこの方法でも完全には直りませんでしたので情報を共有させていただきます。

文字の組み合わせによってはうまくパースできていないようです。
オレンジ色の場所がずれ込んでいくのを確認できました。
「アプリケーション タイトル」の「リ」と「-」を削るときれいにパースしました。

また要所に日本語のコメントが入るとその後のカラーリングもずれ込んでいくようです。

文字の特定のバイト配列に問題があるのか、UTF-8の多バイトに問題があるのでしょうか・・・。

試した環境は下記になります
NetBeansのヘルプ->製品について を転記しました。

製品バージョン:NetBeans IDE 6.5 (Build 200811100001)
Java:1.6.0_10;Java HotSpot(TM) Client VM 11.0-b15
システム:X86上で動作するWindows Vista バージョン 6.0; UTF-8; ja_JP(nb)
ユーザディレクトリ: C:\Users\user\.netbeans\6.5

JavaFX Kit のバージョン 1.6
JavaFX SDK for Windows のバージョン 1.5

encoding指定を試した方法は2つ
下記の方法を行ったところシステムのMS932がUTF-8になっているのを確認しました。

一つ目はショートカットのリンク先に直接付与
"C:\Program Files\NetBeans 6.5\bin\netbeans.exe" -J-Dfile.encoding=UTF-8

VISTAだと管理者権限のダイアログが出ますので続行

二つ目はユーザディレクトリに指定
{userdir}/etc/netbeans.conf

userdir この場合はC:\Users\user\.netbeans\6.5
VISTAではetcフォルダが無かったので作成して
netbeans.confというファイルを生成して
netbeans_default_options を指定。

書式はインストールディレクトリのに合わせました。
C:\Program Files\NetBeans 6.5\etc\netbeans.conf

Posted by Tackn on February 15, 2009 at 02:23 AM JST #

Tacknさん、コメントありがとうございました。

私のほうでも違うパターンを試しましたが、UTF-8 でもダメなケースがありますね。大変失礼しました。特定の文字パターンで問題が起きるのはやっぱり複数バイト処理でおかしくなっているのでしょうね。

頻繁に遭遇するのであれば不便ですが native2ascii してしまうか、プロパティーとして外部に移動しておくというのがはやりよいのでしょうかね。

Posted by 片貝 on February 15, 2009 at 09:39 AM JST #

Post a Comment:
Comments are closed for this entry.

This blog copyright 2009 by katakai