转换转义Unicode字符回到实际的字符(Convert escaped Unicode chara

2019-06-21 13:43发布

我在Java中的字符串变量,其具有编码象下面UTF-8字符以下的值

Dodd\u2013Frank

代替

Dodd–Frank

(假设我没有超过这个数值是如何分配给该字符串变量控制)

现在我该如何转换(编码),它得当,它存回一个String变量?

我发现下面的代码

Charset.forName("UTF-8").encode(str);

但是,这会返回一个ByteBuffer ,但我想一个String回来。

编辑

一些更多的附加信息。

当我使用System.out.println(str); 我得到

Dodd\u2013Frank

我不知道什么是正确的术语(UTF-8或Unicode)。 原谅我这一点。

Answer 1:

尝试

str = org.apache.commons.lang3.StringEscapeUtils.unescapeJava(str);

从阿帕奇共享郎



Answer 2:

你可以利用这一java.util.Properties支持字符串以'为\ uXXXX转义序列的事实优势,做这样的事情:

Properties p = new Properties();
p.load(new StringReader("key="+yourInputString));
System.out.println("Escaped value: " + p.getProperty("key"));

不雅,但功能。



Answer 3:

假设你有一个Unicode值,如00B0(度数符号,或者标“O”,在西班牙语缩写“PRIMERO”)

这里是一个函数,你想要什么,不只是:

public static String  unicodeToString( char  charValue )
{
    Character   ch = new Character( charValue );

    return ch.toString();
}


Answer 4:

我用StringEscapeUtils.unescapeXml反转义从,让XML结果的API加载的字符串。



Answer 5:

您可以在字节的缓冲区转换为字符串是这样的:

import java.nio.charset.Charset;
import java.nio.charset.CharsetDecoder;
import java.nio.ByteBuffer

public static CharsetDecoder decoder = CharsetDecoder.newDecoder();

public static String byteBufferToString(ByteBuffer buffer)
{
    String data = "";
    try 
    {
        // EDITOR'S NOTE -- There is no 'position' method for ByteBuffer.
        //                   As such, this is pseudocode.
        int old_position = buffer.position();
        data = decoder.decode(buffer).toString();
        // reset buffer's position to its original so it is not altered:
        buffer.position(old_position);  
    }
    catch (Exception e)
    {
        e.printStackTrace();
        return "";
    }
    return data;
 }


Answer 6:

也许下面的解决方案,该字符串没有任何额外的依赖关系正确解码。

这部作品在Scala的REPL,但应该只是在Java中唯一的解决方案一样好。

import java.nio.charset.StandardCharsets
import java.nio.charset.Charset

> StandardCharsets.UTF_8.decode(Charset.forName("UTF-8").encode("Dodd\u2013Frank"))
res: java.nio.CharBuffer = Dodd–Frank


文章来源: Convert escaped Unicode character back to actual character