【问题标题】:Java convert character stream into human "readable" StringJava将字符流转换为人类“可读”的字符串
【发布时间】:2012-03-31 01:06:57
【问题描述】:

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

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

有时我会有这样的混合:

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) )
}

【问题讨论】:

  • 那些被称为实体。如果您寻找实体到 Unicode 的转换,您可能会以这种方式找到您正在寻找的东西
  • @dldnh 感谢您的澄清!不是最容易在网上搜索的东西:)

标签: java encoding groovy character-encoding utf8-decode


【解决方案1】:

你可以使用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 )

【讨论】:

    猜你喜欢
    • 2016-12-20
    • 1970-01-01
    • 2013-02-21
    • 2012-03-25
    • 1970-01-01
    • 2016-06-01
    • 2018-08-17
    • 1970-01-01
    • 2014-09-20
    相关资源
    最近更新 更多