从 utf8 转换为 iso-8859-1 后丹麦字符不显示

The danish character not showing after convert from utf8 to iso-8859-1

我正在收听广播流并尝试读取其元数据。它包含一些丹麦字符,显示为?标记,所以我尝试了以下转换

String s = new String(streammetadatastring.getBytes(StandardCharsets.UTF_16), StandardCharsets.ISO_8859_1);

现在它删除了 ?标记但显示错误字符。我尝试了其他方法,但没有得到正确的值。

像你贴的一行代码:

String s = new String(streammetadatastring.getBytes(StandardCharsets.UTF_16),
                          StandardCharsets.ISO_8859_1);

没有做任何有用的事情。

一个character encoding是字符到字节的映射,反之亦然。您在那行代码中所做的是使用 UTF-16 字符编码将字符串转换为字节,然后立即使用 ISO-8859-1 编码将字节转换回字符串。这不会产生任何有用的东西——字节包含 UTF-16 编码字符,而不是 ISO-8859-1 编码字符。

要正确显示丹麦语字符,您必须确保在任何地方显示它(命令提示符 window?a Linux shell?an HTML页面?GUI?)使用包含字符的字体,并且您指定了正确的字符编码(具体操作方式取决于显示字符的位置)。