我从utf-8格式的第三方系统获取xml,我正在尝试正确解析它并将其保存在我的数据库中。例如,下面是我获得的xml的4行,当我尝试使用unescapeXML时,它适用于除了短划线之外的所有内容。
String one = "<Name>test ' test</Name>";
String two = "<Fi>Em – S</Fi>";
String three = "<FirstName>a1 ä</FirstName>";
String four = "crapÉ";
System.out.println(StringEscapeUtils.unescapeXml(one));
System.out.println(StringEscapeUtils.unescapeXml(two));
System.out.println(StringEscapeUtils.unescapeXml(three));
System.out.println(StringEscapeUtils.unescapeXml(four));
输出:
<Name>test ' test</Name>
<Fi>Em S</Fi>
<FirstName>a1 ä</FirstName>
crapÉ
除了字符串“two”之外,一切看起来都很好,它实际上应该是“Em - S”。
我想弄清楚我做错了什么,解码这样的xml字符串的最佳方法是什么
答案 0 :(得分:0)
控制台可能根本无法打印字符 - (–
)。
但是当你检查未转义的字符串时:
String two = "<Fi>Em – S</Fi>";
String twoUnescaped = StringEscapeUtils.unescapeXml(two);
System.out.println(twoUnescaped.codePointAt(7));
你会发现字符引用被正确转义为带有代码点150的Java字符。