Java преобразует поток символов в человеческую" читаемую " строку
У меня есть куча персонажей, которые выглядят примерно так:
Комуникационна кабелна система
И иногда у меня есть такая смесь:
Généralités
Первый переводится как:
Комуникационна кабелна система
И второй к:
Généralités
Я могу увидеть это с помощью браузера и поместить их в тело.
Но как я могу заставить java выводить "реальные" символы ? Как называется приведенная выше кодировка?
Я пробовал пара вещей и, наконец, это (что не сработало):
import java.nio.charset.*;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
List<String> lst = new ArrayList<String>(); lst.add("К"); lst.add("о");
for ( String s : lst ) {
Charset utf8charset = Charset.forName("UTF-8");
Charset iso88591charset = Charset.forName("ISO-8859-1");
ByteBuffer inputBuffer = ByteBuffer.wrap( s.getBytes() );
// decode UTF-8
CharBuffer data = utf8charset.decode(inputBuffer);
// encode ISO-8559-1
ByteBuffer outputBuffer = iso88591charset.encode(data);
byte[] outputData = outputBuffer.array();
System.out.println ( new String(outputData) )
}
1 ответ:
Вы можете использовать commons-lang, чтобы распаковать такие вещи. В Groovy:
@Grab( 'commons-lang:commons-lang:2.6' ) import org.apache.commons.lang.StringEscapeUtils as SEU def str = 'Généralités' println SEU.unescapeHtml( str )
Comments