将转义的 Unicode 字符转换回实际字符java.util.Properties

2022-09-01 08:14:44

我在Java中的字符串变量中有以下值,该变量具有如下所示的UTF-8字符编码

Dodd\u2013Frank

而不是

Dodd–Frank

(假设我无法控制如何将此值分配给此字符串变量)

现在,如何正确转换(编码)它并将其存储回变量中?String

我发现以下代码

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

但这返回一个,但我想要一个回来。ByteBufferString

编辑

更多其他信息。

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

Dodd\u2013Frank

我不确定什么是正确的术语(UTF-8或unicode)。原谅我。


答案 1

尝试

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

来自 Apache Commons Lang


答案 2

java.util.Properties

您可以利用 java.util.Properties 支持带有 '\uXXXX' 转义序列的字符串这一事实,并执行如下操作:

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

不雅,但功能齐全。

为了处理可能的,您可能需要一个尝试捕获。IOExeception

Properties p = new Properties();
try { p.load( new StringReader( "key=" + input ) ) ; } catch ( IOException e ) { e.printStackTrace(); }
System.out.println( "Escaped value: " + p.getProperty( "key" ) );

推荐