在Java中将字符串从UTF-8转换为ISO 8859-1

Der*_*erk 2 java character-encoding

我想在Java中将UTF-8字符串编码为ISO 8859-字符串

我有这个:

String title = new String(item.getTitle().getText().getBytes("ISO-8859-1"));
Run Code Online (Sandbox Code Playgroud)

但它不起作用,输出是例如Sérensen

Jon*_*eet 7

在Java中没有"UTF-8字符串"这样的东西......只有字符串,它们总是以Unicode形式出现.(它们实际上总是 UTF-16.)

你可以有一个字节数组,这是一个字符串(或UTF-8或其他)的ISO-8859-1编码形式,但拥有一个带编码的字符串是没有意义的.

如果您在某处读取了编码不正确的字符串,那么正确的做法是修复读取字符串的代码,而不是稍后尝试从字符串形式解码/编码数据.

如果您可以提供有关该问题的更多信息,我们可以提供一些更有用的建议.

  • @Derk:那么你需要做的就是确保你*将RSS提要读取为UTF-8.这将获得正确的数据到字符串.假设您正在使用一个知道HTML编码的框架,您应该能够写出数据......虽然很明显有许多字符在ISO-8859-1中没有涵盖.(你有没有特别的理由不写出UTF-8中的HTML?这通常是一个更好的计划,因为那时你可以覆盖所有的Unicode字符.) (3认同)
  • @Derk:根据规范,它实际上是**错误**将内容解释为UTF-8.在这种情况下,两个错误可能是正确的,但产生破碎XML的那些仍然应该受到惩罚. (2认同)