java - 如何在 JavaFX 中为非英语支持添加 UTF-8?

标签 java utf-8 javafx multilingual

我想在 JavaFX 中添加 UTF-8 波斯语字符,但是当我添加包含波斯语内容的标签时,它会显示一些奇怪的结果。

我是否必须使用特定的插件或配置来处理这个问题?

最佳答案

波斯语是从右到左?

在这种情况下,您希望使用带有 RTL support 的 JavaFX 版本.那就是 JavaFX 8(包含在 JDK8 中)。有预览可用here .

确保您已加载并使用包含波斯字符字形的字体。

这是一些 sample JavaFX code (从 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();
    }
}

image

其他关于使用和解释正确字符编码的问题和答案的评论也是有效的,因此这个答案并不完全权威。

如果源文件是 ascii 编码的,那么您可以使用 \u 值来表示非 ascii 字符的 unicode 值,如上例所示。

我认为(虽然我没试过),如果源文件(类的 .java 文件或资源的属性文件)是 UTF-8 编码的(它必须是保存为 UTF-8 编码,而不是其他字符集,例如 setting the file encoding in the Intellij IDEA editor )然后您可以直接将 unicode 类型字符放入字符串中,就像处理普通 ASCII 字符一样,而无需使用 /u 编码.如果这样做,编译器或构建工具必须配置为使用 UTF-8 编码文件。例如,使用 Maven:How to configure encoding in Maven?

关于java - 如何在 JavaFX 中为非英语支持添加 UTF-8?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14091011/

相关文章:

java - 从 JavaFX 2.0 中的 TableView 读取选择

JavaFX : Domain objects to TreeView

java - 构造具有未知子类型的 Java 泛型

java - 如何从另一个 scala 文件扩展一个 scala 文件中定义的类

php - 插入数据库的值显示奇怪的字符

php - PHP 中 MySQL 的 UTF-8 字符集问题

java - PieChart (JavaFx) 没有在事件上显示我的标签 - JavaFx

java - 如何使用Webdriver Selenium获取 "style"元素的值

java - SQL语句大概运行,没有错误,但断言失败

c++ - 使用 C++(无 winapi)将 UTF-8 字符转换为最接近的等效 ASCII 字符