如何解码含Unicode十进制编码的字符串?Apache工具尝试失败求助
解决方案
你的问题出在工具选型上——StringEscapeUtils.unescapeJava()是用来处理Java风格转义字符(比如\n、\uXXXX这类)的,而你要解码的—是HTML十进制实体编码,得用专门处理HTML实体的方法。
直接用Apache Commons Text库中的StringEscapeUtils.unescapeHtml4()(或unescapeHtml3())就能解决:
import org.apache.commons.text.StringEscapeUtils; public class EntityDecodeExample { public static void main(String[] args) { String encodedStr = "4,0 — 10,0"; String decodedStr = StringEscapeUtils.unescapeHtml4(encodedStr); System.out.println(decodedStr); // 输出结果:4,0 — 10,0 } }
注意:如果之前用的是旧版Apache Commons Lang库,StringEscapeUtils已经被迁移到Commons Text库中了,需要确保依赖正确引入。
—对应的是Unicode字符U+2014(长破折号),HTML实体解码方法会自动将这类十进制实体转换为对应的Unicode字符,而Java转义解码方法不支持这类格式,所以之前的尝试没效果。
内容的提问来源于stack exchange,提问作者FrancMo
相关产品推荐
相关产品推荐

