将转义的Unicode字符转换回实际的字符
Java中的stringvariables具有下面的值,它具有如下所示的UTF-8字符编码
Dodd\u2013Frank 代替
 Dodd–Frank 
(假设我不能控制这个值如何分配给这个stringvariables)
 现在我该如何转换(编码)它,并将其存储回一个Stringvariables? 
我find了下面的代码
 Charset.forName("UTF-8").encode(str); 
 但是,这返回一个ByteBuffer ,但我想要一个String回来。 
编辑 :
一些更多的附加信息。
 当我使用System.out.println(str); 我明白了 
 Dodd\u2013Frank 
我不确定什么是正确的术语(UTF-8或unicode)。 请原谅我。
尝试
 str = org.apache.commons.lang3.StringEscapeUtils.unescapeJava(str); 
来自Apache Commons Lang
您可以利用java.util.Properties支持具有“\ uXXXX”转义序列的string的事实,并执行如下操作:
 Properties p = new Properties(); p.load(new StringReader("key="+yourInputString)); System.out.println("Escaped value: " + p.getProperty("key")); 
不雅,但function。
你可以把这个字节缓冲区转换成如下string:
 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; } 
假设你有一个Unicode值,比如00B0(度数符号,或上标'o',就像西class牙语中的'primero'缩写)
这是一个function,只是你想要的:
 public static String unicodeToString( char charValue ) { Character ch = new Character( charValue ); return ch.toString(); } 
 我使用StringEscapeUtils.unescapeXml来从给出XML结果的API加载string。