Java UTF_8编码器不编码Unicode_转义
由于我们的系统现在已经切换到UTF-8,我必须用相应的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
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不会变成Ş但是?你知道为什么吗?