Получить фактический характер из ISO-8859-1 символов - PullRequest
2 голосов
/ 03 марта 2012

У меня есть текст:

Á example link.

В ISO-8859-1 Á является Á.

Теперь я пытаюсь преобразовать это Á в Á, используя следующий код:

Charset utf8charset = Charset.forName("UTF-8");
Charset iso88591charset = Charset.forName("ISO-8859-1");

ByteBuffer inputBuffer = ByteBuffer.wrap(text.getBytes());

CharBuffer data = iso88591charset.decode(inputBuffer);

ByteBuffer outputBuffer = utf8charset.encode(data);
byte[] outputData = outputBuffer.array();
return new String(outputData);

Но это не преобразует это Á в Á.

Есть ли способ достичь этого?

Кроме того, я хочу знать, учитывая строку, мы можем определить, что это за кодировка?

1 Ответ

5 голосов
/ 03 марта 2012

Я думаю, что вы перепутали кодировки символов (UTF-8, ISO-8859-1 ...) с символьными сущностями HTML (Á, Ö и т. Д.).

Проверьте unescapeHtml функцию Apache Commons StringEscapeUtils , я предполагаю, что она будет делать то, что вы хотите.

...