UTF-8 ペルシャ文字を JavaFX に追加したいのですが、ペルシャ語のコンテンツを含むラベルを追加すると、奇妙な結果が表示されます。
この問題を処理するには、特定のプラグインまたは構成を使用する必要がありますか?
UTF-8 ペルシャ文字を JavaFX に追加したいのですが、ペルシャ語のコンテンツを含むラベルを追加すると、奇妙な結果が表示されます。
この問題を処理するには、特定のプラグインまたは構成を使用する必要がありますか?
ペルシア語は右から左?
その場合、RTL をサポートするバージョンの JavaFX を使用します。それは JavaFX 8 (JDK8 に含まれています) です。ここでプレビューを利用できます。
ペルシャ文字のグリフを含むフォントをロードして使用していることを確認してください。
これは、ペルシャ語のスクリプトのように見えるものを表示するためのサンプル JavaFX コード(Oracle JavaFX チュートリアルからコピー) です。
import javafx.application.Application;
import static javafx.application.Application.launch;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.scene.text.TextFlow;
import javafx.stage.Stage;
public class JavaFXBidiText extends Application {
@Override
public void start(Stage stage) throws Exception {
TextFlow textFlow = new TextFlow();
Font font = new Font("Tahoma", 48);
Text text1 = new Text("He said \u0627\u0644\u0633\u0644\u0627\u0645");
text1.setFill(Color.RED);
text1.setFont(font);
Text text2 = new Text(" \u0639\u0644\u064a\u0643\u0645 to me.");
text2.setFill(Color.BLUE);
text2.setFont(font);
textFlow.getChildren().addAll(text1, text2);
Group group = new Group(textFlow);
Scene scene = new Scene(group, 650, 150, Color.WHITE);
stage.setTitle("Hello Bidi Text");
stage.setScene(scene);
stage.show();
}
}
この質問に対する他のコメントと、正しい文字エンコーディングの使用と解釈に関する回答も有効であるため、この回答は完全に信頼できるものではありません。
ソース ファイルが ASCII でエンコードさ\u
れている場合は、上記の例に示すように、値を使用して非 ASCII 文字の Unicode 値を表すことができます。
ソースファイル(.java
クラスのファイルまたはリソースのプロパティファイル)がUTF-8でエンコードされている場合(試したことはありませんが)、別の文字セットではなく、UTF-8エンコーディングとして保存する必要があると思います。たとえば、Intellij IDEA エディターでファイル エンコーディングを設定すると、エンコーディングを使用せずに通常の ASCII 文字で行うように、Unicode タイプの文字を文字列に直接配置できます/u
。その場合、コンパイラまたはビルド ツールは、UTF-8 でエンコードされたファイルを処理するように構成する必要があります。たとえば、Maven の場合を参照してください: Mavenでエンコーディングを構成する方法?
ResourceBundle を使用している場合は、適切なエンコーディングでプロパティ ファイルを読み取ることを確認してください。
私は同じ問題に直面しました.答えは、ソースコードファイルのファイルエンコーディングがUTF8ではないということでした(私はintellijidea 14を使用しています)。それらをUTF8に変換したところ、機能しました.
ほとんどの場合、問題は JavaFX とは関係ありませんが、エンコーディングの混乱に関係しています。UTF-8 (言語のセットではなく、Unicode charset エンコーディング) は、古くから Java で完全にサポートされています。このを 消化 する の に 数 時間 を 費やす.