java 将十六进制 NCR 文本转换为 unicode 字符

标签 java android unicode hex

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

ഹലോ സ്റ്റാക്ക്ഓവ&# x0D7C; ഫ്ലോ

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

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

最佳答案

试试这个。

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

关于java 将十六进制 NCR 文本转换为 unicode 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44565586/

相关文章:

Java 数组相等与数组内容相等

java - 无法使用 try-catch 捕获 Java (Android) 异常

Android DialogFragment TextView setText() 不起作用

android - 在 ActionBar 中添加 Easy Share Action

Excel函数-将unicode转换为ascii

python - 将\x 转义字符串转换为 UTF-8

macos - 在 VS Code 中输入 Unicode 符号

java - 为什么我的 GUI Java 程序中的输出文件为空?

Java流收集计数到字段

Android Textview 内容大小