我想在 JavaFX 中添加 UTF-8 波斯语字符,但是当我添加带有波斯语内容的标签时,它会显示一些奇怪的结果。
我是否必须使用特定的插件或配置来处理此问题?
波斯语是从右到左吗?
在这种情况下,您希望使用 JavaFX 版本RTL 支持。那就是 JavaFX 8(包含在 JDK8 中)。有预览可用here.
确保您已加载并正在使用包含波斯语字符字形的字体。
这是一些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编辑器中设置文件编码) 那么你可以直接将 unicode 类型字符放入字符串中,就像处理普通 ASCII 字符一样,而无需使用/u
编码。如果这样做,编译器或构建工具必须配置为使用 UTF-8 编码文件。例如,使用 Maven:如何在Maven中配置编码?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)