JSP でアプレットとして実行されている Java Swing アプリケーション JAR があります。JTextfields の 1 つで、ユーザーが日本語の文字を貼り付けると、文字化けして表示されます。ただし、同じアプリケーションをアプレットとして実行すると、問題なく表示されます。JSP には、META タグに従って UTF-8 として表されるコンテンツがあります。
2 に答える
私は日本語のローカリゼーションの問題について少し経験があるので、可能な解決策を提供しようとします (かなり遅くなりますが)。
JSP コンテンツのエンコーディングは、アプレットで使用されるエンコーディングとは関係ありません。アプレットは、ユーザーのデフォルトのユーザー JRE/JVM 設定を使用しています。
少なくとも 1 つの画面で日本語がユーザーに表示されると仮定すると、これはコピー アンド ペースト マネージャーがテキストをコピーする方法を認識していない (テキストのバイトをコピーするが、貼り付けるときにバイトを誤って再組み立てする) という問題です。 ):
診断画面をアプリに追加し、コンピューターとユーザーのコンピューターで次のシステム プロパティをログに記録します。
System.getProperty("xx");
- file.encoding
- ユーザー.国
- ユーザー.言語
アプレットの起動時に、すべてのユーザー PC で正しい動作を得るために、独自の正しい設定でプロパティを上書きできるはずです。
私が推測するいくつかの可能性があります。ディスプレイが有効な文字であると判断したときにボックスが表示されることがありますが、その文字に対応するグリフ (フォントのエントリ) が見つかりません。
これらの文字を含むフォントがインストールされていない可能性はありますか? それとも、アプレットがこれらのコード ポイントをシステム内の特定のフォントにマップできないということでしょうか?
問題が予想される文字エンコーディングと実際の文字エンコーディングの不一致によるものである場合、それは単なるボックスではなく、おそらく不正な文字 (gobbledy-gook など) も含まれていると思います。