Pessoal to repondendo aqui para alguem que tiver o mesmo problema… achei uma solução, não sei se é a melhor mas lá vai:
public String unescapeHTML(String schtuff) {
String[][] asciiArray = { { "<", "<" }, { ">", ">" },
{ "&", "&" }, { """, "\"" }, { "à", "à" },
{ "À", "À" }, { "â", "â" }, { "ä", "ä" },
{ "Ä", "Ä" }, { "Â", "Â" }, { "å", "å" },
{ "Å", "Å" }, { "æ", "æ" }, { "Æ", "Æ" },
{ "ç", "ç" }, { "Ç", "Ç" }, { "é", "é" },
{ "É", "É" }, { "è", "è" }, { "È", "È" },
{ "ê", "ê" }, { "Ê", "Ê" }, { "ë", "ë" },
{ "Ë", "Ë" }, { "ï", "ï" }, { "Ï", "Ï" },
{ "ô", "ô" }, { "Ô", "Ô" }, { "ö", "ö" },
{ "Ö", "Ö" }, { "ø", "ø" }, { "Ø", "Ø" },
{ "ß", "ß" }, { "ù", "ù" }, { "Ù", "Ù" },
{ "û", "û" }, { "Û", "Û" }, { "ü", "ü" },
{ "Ü", "Ü" }, { " ", " " }, { "®", "\u00a9" },
{ "©", "\u00ae" }, { "€", "\u20a0" } };
int flag = -1, ampIndex = -1;
if (schtuff.indexOf("&") >= 0) {
if (schtuff.indexOf(";") > schtuff.indexOf("&")) {
String asciiStuff = schtuff.substring(schtuff.indexOf("&"),
schtuff.indexOf(";") + 1);
ampIndex = schtuff.indexOf("&");
while (asciiStuff.substring(1, asciiStuff.length())
.indexOf("&") >= 0) {
ampIndex = schtuff.indexOf("&", ampIndex + 1);
asciiStuff = asciiStuff.substring(1, asciiStuff.length())
.trim();
}
for (int j = 0; j < asciiArray.length; j++) {
if (asciiArray[j][0].equals(asciiStuff)) {
flag = j;
break;
}
}
if (flag >= 0) {
schtuff = schtuff.substring(0, ampIndex)
+ asciiArray[flag][1]
+ schtuff.substring(schtuff.indexOf(";") + 1,
schtuff.length());
return unescapeHTML(schtuff); // RECURSIVE
}
}
return schtuff;
} else {
return schtuff.trim();
}
}
Funcionou perfeitamente.
Abraços