我正在收听广播流并尝试阅读其元数据。它包含一些丹麦字符,显示为?标记,所以我尝试了以下转换
String s = new String(streammetadatastring.getBytes(StandardCharsets.UTF_16), StandardCharsets.ISO_8859_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?)使用包含字符的字体,并指定正确的字符编码(如何操作,取决于显示字符的位置)。