Java将字符流转换为人类"可读"字符串

mom*_*omo 6 java groovy encoding character-encoding utf8-decode

我有一堆字符看起来像这样:

Комуникационна кабелна система
Run Code Online (Sandbox Code Playgroud)

有时我会像这样混合:

Généralités
Run Code Online (Sandbox Code Playgroud)

第一个转换为:

Комуникационнакабелнасистема

第二个:

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("&#1050;"); lst.add("&#1086;");
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) )
}
Run Code Online (Sandbox Code Playgroud)

tim*_*tes 7

你可以使用commons-lang来解决这类问题.在Groovy中:

@Grab( 'commons-lang:commons-lang:2.6' )
import org.apache.commons.lang.StringEscapeUtils as SEU

def str = 'G&#233;n&#233;ralit&#233;s'

println SEU.unescapeHtml( str )
Run Code Online (Sandbox Code Playgroud)