我正在开发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("کاربران"));
对于某些字符,此答案无法正常工作:
我仍然得到奇怪的结果。如果我不使用编码,则会得到:
答案 0 :(得分:4)
对于硬编码的字符串文字,您需要告诉javac编译器使用与Java源相同的编码,例如 UTF-8 。检查IDE /构建设置。您可以转义一些波斯符号,
\u062f
代表Dal,د
。如果转义字符正确通过,则编译器将使用错误的编码。
String
将始终包含Unicode,不需要new String
并进行hacking转换。
在读取带有文本的文件时,需要将这些字节(byte / InputStream)转换为Java文本(String / Reader),并指定这些字节的 encoding 。