编码的UTF-8字符到特殊重音字符在Java中,我有从API,它看起来获得的字符串,如:变换在机器人
HOLA,é STO ES乌纳frase CON acentos。
我想有:
HOLA,ESTO ES UNA frase CON acentos。
不仅在这个例子中,我需要它为所有的UTF-8编码字符。
我一直在寻找这一个小时,但我还没有找到解决方案。
编码的UTF-8字符到特殊重音字符在Java中,我有从API,它看起来获得的字符串,如:变换在机器人
HOLA,é STO ES乌纳frase CON acentos。
我想有:
HOLA,ESTO ES UNA frase CON acentos。
不仅在这个例子中,我需要它为所有的UTF-8编码字符。
我一直在寻找这一个小时,但我还没有找到解决方案。
这不是编码,它是一个HTML数字字符引用。
对付它最简单的方法是Apache Commons Lang中库添加到您的项目,并调用StringEscapeUtils.unescapeHtml4
好吧,如果你的文本与SGML实体编码,一种可能的方法是使用XML解析器解码它(尽管它可能是没有那么聪明):
public static String decodeSgml(String src)
throws org.xml.sax.SAXException,
javax.xml.parsers.ParserConfigurationException,
java.io.IOException
{
InputSource inputSource=new InputSource(new StringReader("<x>"+src+"</x>"));
javax.xml.parsers.DocumentBuilderFactory factory=javax.xml.parsers.DocumentBuilderFactory.newInstance();
javax.xml.parsers.DocumentBuilder docBuilder=factory.newDocumentBuilder();
org.w3c.dom.Document doc=docBuilder.parse(inputSource);
return doc.getDocumentElement().getTextContent();
}
(如果该方法抛出的异常的数量看起来过度,你也许可以再次抛出一些为ServiceConfigurationErrors,或者存储一些变量作为静态成员)。