【问题标题】:java Convert Hex NCRs texts to unicode charactersjava 将十六进制 NCR 文本转换为 unicode 字符
【发布时间】:2017-11-17 20:01:36
【问题描述】:

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

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

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

如何将此输入转换为所需的形式..

【问题讨论】:

  • 你必须找到能把英文转换成当地语言的字体

标签: java android unicode hex


【解决方案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);
// -> ഹലോ സ്റ്റാക്ക്ഓവർ ഫ്ലോ

【讨论】:

  • python中有什么等价的解决方案吗?
猜你喜欢
  • 1970-01-01
  • 2014-12-22
  • 2021-04-30
  • 1970-01-01
  • 2020-02-06
  • 1970-01-01
  • 2013-10-09
  • 2017-05-16
  • 1970-01-01
相关资源
最近更新 更多