我想在 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();
}
}
其他关于使用和解释正确字符编码的问题和答案的评论也是有效的,因此这个答案并不完全权威。
如果源文件是 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/