编码字符串在Java中无法正常工作

时间:2019-09-05 14:29:00

标签: java string javafx encoding character-encoding

我正在开发JavaFX应用程序。我需要使用波斯语作为节点的名称,以编程方式创建TreeView
问题是我在运行应用程序时看到奇怪的字符。我已经在网上搜索了同样的问题。我编写了一个函数,根据相同问题的答案进行编码:

public static String getUTF(String encodeString) {
        return new String(encodeString.getBytes(StandardCharsets.ISO_8859_1),
                         StandardCharsets.UTF_8);
}

然后我用它来转换我的字符串以构建TreeView

CheckBoxTreeItem<String> userManagement = 
             new CheckBoxTreeItem<>(GlobalItems.getUTF("کاربران"));

对于某些字符,此答案无法正常工作:

enter image description here

我仍然得到奇怪的结果。如果我不使用编码,则会得到:

enter image description here

1 个答案:

答案 0 :(得分:4)

对于硬编码的字符串文字,您需要告诉javac编译器使用与Java源相同的编码,例如 UTF-8 。检查IDE /构建设置。您可以转义一些波斯符号, \u062f代表Dal,د。如果转义字符正确通过,则编译器将使用错误的编码。

String将始终包含Unicode,不需要new String并进行hacking转换。

在读取带有文本的文件时,需要将这些字节(byte / InputStream)转换为Java文本(String / Reader),并指定这些字节的 encoding