从utf8转换为iso-8859-1之后没有显示的丹麦字符

时间:2015-03-31 17:53:05

标签: java android unicode

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

String s = new String(streammetadatastring.getBytes(StandardCharsets.UTF_16), StandardCharsets.ISO_8859_1);
现在它删除了吗?标记但显示错误的字符。我尝试了其他方法,但没有得到正确的价值观。

1 个答案:

答案 0 :(得分:2)

像你发布的一行代码:

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编码字符。

要正确显示丹麦语字符,您必须确保无论您在何处显示它(命令提示符窗口?Linux shell?HTML页面?GUI?)使用包含字符的字体,并指定正确的字符编码(如何操作,取决于显示字符的位置)。