Java的转换字符流为人类的“可读”字符串
问题描述:
我有一堆与人物看起来是这样的:Java的转换字符流为人类的“可读”字符串
Комуникационна кабелна система
,有时我有一个这样的组合:
Généralités
的首先翻译成:
К о м у н и к а ц и о н н а к а б е л н а с и с т е м а
和第二给:
摹éňé ralit é小号
我该使用的浏览器,并把它们进入人体可以看到。
但是我怎样才能让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))
}
答
您可以使用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)
它是HTML转义的。 – 2012-03-14 14:48:56
这些被称为实体。如果你寻找实体到Unicode的转换,你可能会找到你想要的方式 – dldnh 2012-03-14 14:49:42
@dldnh感谢澄清!不是搜索网络的最简单的方法:) – momomo 2012-03-14 15:19:28