Я верю, что ваш код в порядке. Похоже, что ваша проблема в том, что вам нужно выполнить конкретное преобразование символов, и, возможно, ваш «реальный» ввод кодируется неправильно. Чтобы проверить, я бы сделал стандартное пошаговое кодирование / декодирование CharSet, чтобы увидеть, где что-то ломается.
Ваши кодировки выглядят отлично, http://docs.oracle.com/javase/1.6/docs/guide/intl/encoding.doc.html
А следующее, кажется, работает нормально:
//i suspect your problem is here - make sure your encoding the string correctly from the byte/char stream. That is, make sure that you want "iso-8859-1" as your input characters.
Charset charsetE = Charset.forName("iso-8859-1");
CharsetEncoder encoder = charsetE.newEncoder();
//i believe from here to the end will probably stay the same, as per your posted example.
Charset charsetD = Charset.forName("UTF-8");
CharsetDecoder decoder = charsetD.newDecoder();
ByteBuffer bbuf = encoder.encode(CharBuffer.wrap(inputString));
CharBuffer cbuf = decoder.decode(bbuf);
final String result = cbuf.toString();
System.out.println(result);