如何使用非拉丁字符的FXML和属性文件?

毛斯科

我需要为非拉丁语言(简体中文,日文汉字等)创建i18n属性文件。在产品的Swing部分中,我们使用Java属性文件,其中包含原始UTF-8字符,Netbeans会自动将这些属性文件转换为8859-1对我们来说,效果很好。对于JavaFX,此策略不起作用。我们的策略恰好与该答案相符,在这种情况下似乎不起作用。

在对问题的调查中,我发现了这则旧文章,表明我需要使用它native2ascii来转换属性文件中的字符。仍然不起作用。

为了消除尽可能多的变量,我创建了一个示例FXML项目来说明该问题。日语汉字中有三个国际化标签。第一个标签在FXML文档中具有文本。第二个从属性文件加载未转义的原始字符。第三个加载转义的Unicode(匹配native2ascii输出)。

jp_test.properties

btn.one=閉じる
btn.two=\u00e9\u2013\u2030\u00e3\ufffd\u02dc\u00e3\u201a\u2039

jp_test.fxml

<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.paint.*?>
<?scenebuilder-preview-i18n-resource jp_test.properties?>

<AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="147.0" prefWidth="306.0" xmlns:fx="http://javafx.com/fxml">
  <children>
    <Label layoutX="36.0" layoutY="33.0" text="閉じる" />
    <Label layoutX="36.0" layoutY="65.0" text="%btn.one" />
    <Label layoutX="36.0" layoutY="97.0" text="%btn.two" />
    <Label layoutX="132.0" layoutY="33.0" text="Static Label" textFill="RED" />
    <Label layoutX="132.0" layoutY="65.0" text="Properties File Unescaped" textFill="RED" />
    <Label layoutX="132.0" layoutY="97.0" text="Properties File Escaped" textFill="RED" />
  </children>
</AnchorPane>

结果

帮我修复第三个标签

如您所见,第三个标签显示不正确。

环境:

Java 7 u21,u27,u45,u51、32位和64位。(JavaFX 2.2.3-2.2.45)

Windows 7 Enterprise,专业版64位。

更新

我已验证属性文件ISO 8859-1

在此处输入图片说明

乌鲁克·比(Uluk Biy)

默认情况下,大多数IDE(至少是NetBeans)都以unicode编码方式处理文件。如果要在NetBeans中创建属性文件并在其中输入日语文本,则输入的文本将自动编码为utf。要查看此内容以记事本(++)打开属性文件,您将看到日语字符已转义。
utf的转义字符“ 閉じる”为“ \u9589\u3058\u308b”,而反面的\u00e9\u2013\u2030\u00e3\ufffd\u02dc\u00e3\u201a\u2039”为“ é–‰ã�˜ã‚‹”。因此图中的程序输出是正确的。此外,如果您在NetBeans中重新打开jp_test.properties文件,您将看到转义的utf编码文本将被视为已解码。

编辑:根据评论,
它为什么这样做?
可能是因为您省略了-encodingnative2ascii参数,所以系统的默认字符集可能不是UTF。这可能是该输出的原因。

另外,为什么Java和Swing的属性文件没有问题,
但FXML无法处理呢?

事实并非如此,因为“ FXML是Java”。唯一的区别也可能是“系统字符集的使用”与“在某些配置位置覆盖字符集”。

无论如何,我建议根据输入文件的编码使用native2ascii的正确编码参数。更具体地说,首先将属性文件转换为utf-8编码,然后再进行其余操作。如果您将NetBeans用作IDE,则不需要native2ascii。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何浏览以非拉丁字符命名的目录?

来自分类Dev

如何浏览以非拉丁字符命名的目录?

来自分类Dev

如何将fmt命令与非拉丁字符一起使用?

来自分类Dev

如何使用 Mongoosastic 在 ElasticSearch 自动完成中处理非拉丁字符?

来自分类Dev

Javascript toLowerCase()使用非拉丁字符提供不同的长度

来自分类Dev

正则表达式拉丁字符过滤器和非拉丁字符过滤器

来自分类Dev

使用 sql loader 加载包含拉丁字符的 csv 文件

来自分类Dev

Cloudant Java非拉丁字符

来自分类Dev

VBA InputBox() 中的非拉丁字符

来自分类Dev

getapplicationlabel 是否返回非拉丁字符?

来自分类Dev

上载包含拉丁字符的文件

来自分类Dev

如何使用从VBA代码调用的Mac合成语音(通过MacScript)来读取非拉丁字符(希腊语)

来自分类Dev

如何使用从VBA代码调用的Mac合成语音(通过MacScript)来读取非拉丁字符(希腊语)

来自分类Dev

Python拉丁字符和Unicode

来自分类Dev

MySQL将拉丁字符拼合为非拉丁字符

来自分类Dev

在PostgreSQL的连接字符串UserID中使用非拉丁字符

来自分类Dev

Grails 2.4插件渲染将跳过非拉丁字符并返回空白pdf文件

来自分类Dev

python导入带有中文字符和拉丁字符的csv文件

来自分类Dev

使用 jquery 使用非拉丁字符搜索过滤器功能

来自分类Dev

如何在xml c#中替换非ascii西方拉丁字符,例如'┌''├''⌐''┐''┴'

来自分类Dev

如何读取从iDTCPServer发送的内存流中的非拉丁字符?

来自分类Dev

如何将非拉丁字符串传递给Django中的url参数?

来自分类Dev

如何强制我的搜索输入字段忽略非拉丁字符?

来自分类Dev

使用带有非拉丁字符的A1表示法访问Google表格中的值

来自分类Dev

联系表格不接受非拉丁字符

来自分类Dev

带有非拉丁字符的Rails友好ID

来自分类Dev

发送帖子包含python的非拉丁字符

来自分类Dev

角http发布将非拉丁字符转换为?

来自分类Dev

对非拉丁字符不敏感的SQL查询?

Related 相关文章

  1. 1

    如何浏览以非拉丁字符命名的目录?

  2. 2

    如何浏览以非拉丁字符命名的目录?

  3. 3

    如何将fmt命令与非拉丁字符一起使用?

  4. 4

    如何使用 Mongoosastic 在 ElasticSearch 自动完成中处理非拉丁字符?

  5. 5

    Javascript toLowerCase()使用非拉丁字符提供不同的长度

  6. 6

    正则表达式拉丁字符过滤器和非拉丁字符过滤器

  7. 7

    使用 sql loader 加载包含拉丁字符的 csv 文件

  8. 8

    Cloudant Java非拉丁字符

  9. 9

    VBA InputBox() 中的非拉丁字符

  10. 10

    getapplicationlabel 是否返回非拉丁字符?

  11. 11

    上载包含拉丁字符的文件

  12. 12

    如何使用从VBA代码调用的Mac合成语音(通过MacScript)来读取非拉丁字符(希腊语)

  13. 13

    如何使用从VBA代码调用的Mac合成语音(通过MacScript)来读取非拉丁字符(希腊语)

  14. 14

    Python拉丁字符和Unicode

  15. 15

    MySQL将拉丁字符拼合为非拉丁字符

  16. 16

    在PostgreSQL的连接字符串UserID中使用非拉丁字符

  17. 17

    Grails 2.4插件渲染将跳过非拉丁字符并返回空白pdf文件

  18. 18

    python导入带有中文字符和拉丁字符的csv文件

  19. 19

    使用 jquery 使用非拉丁字符搜索过滤器功能

  20. 20

    如何在xml c#中替换非ascii西方拉丁字符,例如'┌''├''⌐''┐''┴'

  21. 21

    如何读取从iDTCPServer发送的内存流中的非拉丁字符?

  22. 22

    如何将非拉丁字符串传递给Django中的url参数?

  23. 23

    如何强制我的搜索输入字段忽略非拉丁字符?

  24. 24

    使用带有非拉丁字符的A1表示法访问Google表格中的值

  25. 25

    联系表格不接受非拉丁字符

  26. 26

    带有非拉丁字符的Rails友好ID

  27. 27

    发送帖子包含python的非拉丁字符

  28. 28

    角http发布将非拉丁字符转换为?

  29. 29

    对非拉丁字符不敏感的SQL查询?

热门标签

归档