Sudar Sudar - 5 months ago 21
Java Question

Convert escaped Unicode character back to actual character

I have the following value in a string variable in Java which has UTF-8 characters encoded like below

Dodd\u2013Frank


instead of

Dodd–Frank


(Assume that I don't have control over how this value is assigned to this string variable)

Now how do I convert (encode) it properly and store it back in a
String
variable?

I found the following code

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


But this returns a
ByteBuffer
, but I want a
String
back.

Edit:

Some more additional information.

When I use
System.out.println(str);
I get

Dodd\u2013Frank


I am not sure what is the correct terminology (UTF-8 or unicode). Pardon me for that.

Answer

try

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

from Apache Commons Lang