java将Hex NCRs文本转换为unicode字符

问题描述 投票:0回答:1

我正在为当地语言制作一个提要阅读器应用程序。新闻网站为rss提供这些字符

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

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

如何将此输入转换为所需的表单..

java android unicode hex
1个回答
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);
// -> ഹലോ സ്റ്റാക്ക്ഓവർ ഫ്ലോ
© www.soinside.com 2019 - 2024. All rights reserved.