编码字符串在java中不能正常工作

Ali*_* HA 0 java string encoding javafx character-encoding

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

public static String getUTF(String encodeString) {
        return new String(encodeString.getBytes(StandardCharsets.ISO_8859_1),
                         StandardCharsets.UTF_8);
}
Run Code Online (Sandbox Code Playgroud)

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

CheckBoxTreeItem<String> userManagement = 
             new CheckBoxTreeItem<>(GlobalItems.getUTF("???????"));
Run Code Online (Sandbox Code Playgroud)

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

在此处输入图片说明

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

在此处输入图片说明

Joo*_*gen 5

对于硬编码的字符串文字,您需要告诉 javac 编译器使用与 java 源代码相同的编码,比如UTF-8。检查 IDE/构建设置。您可以u型逃避一些波斯语符号, \u062f为达尔,?。如果转义字符正确通过,则编译器使用错误的编码。

String将始终包含 Unicode,不需要new Strings 需要黑客重新转换。

读取带有文本的文件,需要将这些字节(字节/输入流)转换为指定这些字节编码的java 文本(字符串/读取器)。

  • 我正在使用“gradle”。所以我在我的依赖项中设置: `compileJava.options.encoding = 'UTF-8'` (3认同)