2017-06-15 255 views
0

我正在为当地语言制作Feed阅读器应用程序。新闻站点提供RSS订阅这些字符java将Hex NCRs文本转换为Unicode字符

ഹലോ സ്റ്റാക്ക്ഓവർ ഫ്ലോ

这实际上意味着 ഹലോ സ്റ്റാക്ക്ഓവർ ഫ്ലോ 这也是我想在我的应用程序显示..

如何在Java,可我这个输入转换成所需的形式..

+0

你必须找到这样的字体,将英语转换为当地语言 –

回答

1

试试这个。

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。 但无法处理x10000x10FFFF。您可以使用Jsoup这样的。

Document doc = Jsoup.parse(input); 
String output = doc.text(); 
System.out.println(output); 
// -> ഹലോ സ്റ്റാക്ക്ഓവർ ഫ്ലോ 
+0

@ Pzy64我更新了答案。 – saka1029