如何在 JavaFX 中添加 UTF-8 以实现非英语支持?

2023-11-22

我想在 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();
    }
}

image

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

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

我想(虽然我没有尝试过),如果源文件(.java类的文件或资源的属性文件)是 UTF-8 编码的(必须保存为 UTF-8 编码,而不是其他字符集,例如在Intellij IDEA编辑器中设置文件编码) 那么你可以直接将 unicode 类型字符放入字符串中,就像处理普通 ASCII 字符一样,而无需使用/u编码。如果这样做,编译器或构建工具必须配置为使用 UTF-8 编码文件。例如,使用 Maven:如何在Maven中配置编码?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 JavaFX 中添加 UTF-8 以实现非英语支持? 的相关文章

随机推荐

  • JavaScript 对象的生命周期和内存泄漏

    我对此进行了相当多的研究 但主要是通过将其他问题拼凑在一起 这仍然留下了一些疑问 在一个不随时刷新浏览器页面并且可能会运行相当长一段时间 几个小时 而不关闭的应用程序中 假设刷新页面或导航到另一个页面会重新启动 js 代码 确保对象的最佳方
  • TypeScript:具有可选值的可区分联合

    给定以下类型 interface FullName fullName string interface Name firstName string lastName string type Person FullName Name cons
  • 友元函数无法构造该类的唯一指针

    我有一个特定的设计策略 其中我的类的构造函数是私有的 并且只能由该类的朋友构建 在朋友函数中 我尝试使用以下命令创建我的类的 unique pointerstd make unique但它不编译 我的 VC12 编译器抱怨 c progra
  • 编写并编织一份按变量与特殊字符 (å æ ø) 分割的 PDF 报告 - 编码问题

    我尝试使用基于分组变量的部分来生成一份 PDF 报告brew and knitr 我的分组变量可能包含特殊字符 元音变音 例如 仅文档标题中的变音符号可以很好地处理 usepackage utf8 inputenc 参见下面的示例 但是 分
  • 为什么 jquery .height() 在 chrome 上得到不同的结果?

    这是 chrome 显示 div 的宽度和高度的方式 这是正确的 事实上高度是 1466 但是 如果我这样做 document ready function console log container altezza fisso heigh
  • Javascript 到 Jquery,在输入 onclick 中添加文本

    我怎样才能将这个javascript代码更改为JQuery 当用户单击链接时 文本会自动添加到输入中 这是 HTML
  • NginX 不执行 PHP

    我已经尝试过数十种可能的解决方案来解决这个问题 但找不到任何有效的解决方案 基本上 PHP 文件不会在我的 NginX PHP fpm Ubuntu 14 服务器上执行 我拥有所有软件包 并且它们正在运行 我已经清除了浏览器缓存等 但还没有
  • 重载和覆盖

    重载和覆盖有什么区别 超载 重载是指同一范围内有多个具有相同名称但不同签名的方法 Overloading public class Test public void GetStuff int id public void GetStuff
  • MVVM轻信使类

    任何人都可以提供有关如何在 MVVM Light 中使用信使类的示例 链接 简单插图 视频 演示吗 您应该查看 CodePlex 上 MVVM Light 的源代码 http mvvmlight codeplex com SourceCon
  • 仅调用一次函数

    我有 3 个 div Mask Intro Container 因此 如果您单击 蒙版 介绍 将被隐藏 而 容器 将出现 问题是我只想加载一次 而不是每次刷新页面或每次单击菜单或链接等时加载 我怎样才能做到这一点 这是我现在使用的脚本 do
  • CSS,覆盖所有选择下拉菜单的高度?

    我将如何引用 以便我可以覆盖所有选择框 以便我可以覆盖默认高度 当我使用类创建元素时我很熟悉 但我对此不确定 100 JS 解决方案 使用 jquery select height 120px 100 JS 解决方案 无 jquery va
  • 捕获组字符数限制

    假设我有这样的文字 AAAA1 AAA11 AA111AA A1111 AAAAA AAAA1111 我想找到所有符合这 3 个条件的事件 大写字母 1 至 4 次 数字1到4次 最大字符数为 5 所以比赛将是 AAAA1 AAA11 AA
  • 将数据流管道的输出写入分区目标

    我们有一个流事件源 每秒有数千个事件 这些事件都标有一个 ID 用于标识该事件属于我们数以万计的客户中的哪一个 我们希望使用此事件源来填充数据仓库 在流模式下 但是 我们的事件源不是持久的 因此我们还希望将原始数据存档在 GCS 中 以便我
  • HTML5 Canvas 使黑色透明

    我有大量黑色背景的图像 例如 是否有可能通过Javascript忽略黑色 000000 并将其绘制在画布上 出现这样的情况 基本上是尝试获取黑色像素并使其成为 Alpha 通道 因此 您需要遍历所有像素并更改所有黑色像素的 alpha 值
  • Java.util.scanner 错误处理

    我正在帮助一个朋友解决java问题 然而 我们遇到了障碍 我们使用 Java Util Scanner nextInt 从用户那里获取一个号码 不断询问用户是否提供了其他信息 唯一的问题是 我们不知道如何进行错误处理 我们尝试过的 do i
  • 使用 Google 广告通过 PhoneGap 应用获利(使用 PhoneGap Build 构建)

    在 AdMob 上 有不再有 HTML5 应用程序的选项 以及 AdSense 移动应用 甚至是基于 webview 的应用 明确提及 被禁止 如何使用 Google 广告通过 PhoneGap 应用 使用 PhoneGap Build 构
  • 未捕获的引用错误:尝试在 Chrome 中的另一个 Worker 中创建 Worker 时未定义 Worker

    This link says 如果工人们愿意的话 他们可以产生更多的工人们 所谓的副工 必须与父页面托管在同一源中 另外 子工作人员的 URI 是相对于父工作人员的 URI 进行解析的 位置而不是所属页面的位置 这使得更容易 工作人员跟踪他
  • 缩放 matplotlib 中的插图,无需重新绘制数据

    我正在处理一些 matplotlib 图 需要有一个缩放的插图 这是可能的zoomed inset axes来自axes grid1工具包 参见示例here import matplotlib pyplot as plt from mpl
  • 高效交易,记录锁定

    我有一个存储过程 它选择 1 条记录 可以从不同 PC 上的多个不同应用程序调用存储过程 这个想法是 存储过程带回需要处理的下一条记录 如果两个应用程序同时调用存储过程 则不应带回同一条记录 我的查询如下 我正在尝试尽可能高效地编写查询 s
  • 如何在 JavaFX 中添加 UTF-8 以实现非英语支持?

    我想在 JavaFX 中添加 UTF 8 波斯语字符 但是当我添加带有波斯语内容的标签时 它会显示一些奇怪的结果 我是否必须使用特定的插件或配置来处理此问题 波斯语是从右到左吗 在这种情况下 您希望使用 JavaFX 版本RTL 支持 那就