试试这个。
String input = "ഹലോ സ്റ"
+ "്റാക്ക്ഓ"
+ "വർ ഫ്ലോ";
Pattern HEX = Pattern.compile("(?i)&#x([0-9a-f]+);|&#(\\d+);");
Matcher m = HEX.matcher(input);
StringBuffer sb = new StringBuffer();
while (m.find())
m.appendReplacement(sb,
String.valueOf((char) (m.group(1) != null ?
Integer.parseInt(m.group(1), 16) :
Integer.parseInt(m.group(2)))));
m.appendTail(sb);
String output = sb.toString();
System.out.println(output);
// -> ഹലോ സ്റ്റാക്ക്ഓവർ ഫ്ലോ
此代码还可以处理十进制NCR。 但无法处理x10000
至x10FFFF
。您可以使用Jsoup这样的。
Document doc = Jsoup.parse(input);
String output = doc.text();
System.out.println(output);
// -> ഹലോ സ്റ്റാക്ക്ഓവർ ഫ്ലോ
你必须找到这样的字体,将英语转换为当地语言 –