gpt4 book ai didi

Java 无法解析从 feed 接收到的少数 unicode 字符

转载 作者:太空宇宙 更新时间:2023-11-04 08:03:50 27 4
gpt4 key购买 nike

我从我的一个 Feed 提供商处获取了 XML 中带有 unicode 字符的以下字符串,但我无法解析该字符串。我还尝试获取这些字符的十六进制代码,然后在其前面加上\u,但这也不起作用。

String str = "🎉🎉🎉🎉</fullText" + ">";
StringBuilder strb = new StringBuilder();
char[] chars = str.toCharArray();
for (int i = 0; i < chars.length; i++) {
char c = chars[i];
if ( c >= Character.MIN_HIGH_SURROGATE && c <= Character.MAX_HIGH_SURROGATE ) {
char ch2 = chars[i+1];
} else
strb.append(c);
}
System.out.println(strb.toString());

理想情况下,这应该跳过这些字符,但事实并非如此。我想删除字符串中的那些字符。

有人遇到过类似的问题吗?非常感谢在这方面的任何帮助。

瓦伊巴夫

最佳答案

该代码似乎仅跳过高代理代码点。使其跳过以下低代理的最简单的更改是更改行

        char ch2 = chars[i+1]; 

        i++;

但是,以这种方式编写循环更加健壮并且使代码更具可读性:

 for (int i = 0; i < chars.length; i++) {
char c = chars[i];
Character.UnicodeBlock block = Character.UnicodeBlock.of(c);
if(block != Character.UnicodeBlock.HIGH_SURROGATES &&
block != Character.UnicodeBlock.LOW_SURROGATES) {
strb.append(c);
}
}

这还可以处理包含孤立的高代理项或低代理项或顺序错误的高代理项和低代理项的格式错误的数据(这意味着即使您将有效代理项对处理为可接受的字符,也应该跳过或错误处理数据)。

关于Java 无法解析从 feed 接收到的少数 unicode 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12419778/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com