Java UTF_8编码器不编码Unicode_转义

Java UTF_8编码器不编码Unicode_转义,java,unicode,encoding,utf-8,Java,Unicode,Encoding,Utf 8,由于我们的系统现在已经切换到UTF-8,我必须用相应的UTF-8字符替换所有现有的Unicode_转义。不幸的是,我的代码不起作用,我不知道为什么 我向方法输入一个字符串,例如 ui.activityFeed.currentActivities=Aktuelle-Aktivit\u00e4ten 并期待这一回报: ui.activityFeed.currentActivities=Aktuelle-Aktivitäten private static String replaceUmlaut

由于我们的系统现在已经切换到UTF-8,我必须用相应的UTF-8字符替换所有现有的Unicode_转义。不幸的是,我的代码不起作用,我不知道为什么

我向方法输入一个字符串,例如
ui.activityFeed.currentActivities=Aktuelle-Aktivit\u00e4ten

并期待这一回报:
ui.activityFeed.currentActivities=Aktuelle-Aktivitäten

  private static String replaceUmlaute(String line) {
    System.out.println(line);
    final ByteBuffer buffer = StandardCharsets.UTF_8.encode(line);
    final String utf8EncodedString = StandardCharsets.UTF_8.decode(buffer).toString();
    System.out.println(utf8EncodedString);
    return utf8EncodedString;
  }
结果:
ui.activityFeed.currentActivities=Aktuelle-Aktivit\u00e4ten
ui.activityFeed.currentActivities=Aktuelle-Aktivit\u00e4ten

我已经尝试过替换方法,但也不起作用 感谢您的帮助

这是我的解决方案:

  private static String replaceUmlaute(String line) throws IOException {
    final Properties p = new Properties();
    p.load(new StringReader("key=" + line));
    return p.getProperty("key");
  }

也许这会有帮助,因为看起来你有财产档案。非常感谢。这就解决了我的问题。“我必须用相应的UTF-8字符替换所有现有的Unicode_转义”:不,这不是必需的。从概念上讲,Java中的字符串没有编码,它只是一个字符序列。编码只有在转换为字节或从字节转换为字节时才有意义。对于属性文件,如果你走这条路,用unicode字符替换unicode转义,就会有危险。绝对确保始终使用
load(Reader Reader)
方法(以及基于UTF-8的读取器)读取属性文件,而决不要使用
load(InputStream inStream)
。后者,旧的一个假设ISO-8859-1编码的文件,并将产生无意义的UTF-8文件。因此,我建议将unicode转义保持在ASCII字符集内。这将适用于两种
load()
变体。实际上,作业是分配给我的,因此我别无选择,只能交换转义。不管怎样,它现在起作用了-一半。。。rukish文件中的转义未正确转换。例如.\u015E不会变成Ş但是?你知道为什么吗?