Java解码器提供了很容易将byte[]解码为chars[]的方法,但众所周知,UTF8字符可以由多个java字符组成。
由于java中的API开始使用int codePoint作为替代,但似乎缺少将字节解码为codePoints的功能。
我的目标是将给定偏移量处的字节解码为单 codePoint,而不创建像ArrayBuffer这样的中间对象。
有什么有效的方法来实现这一点吗?
发布于 2019-08-15 14:41:35
是的,Java本身为您提供了这个工具。查看类Character、方法公共静态int codePointAt(char[] a,int索引) (及其重载版本),它们应该对您有帮助。此外,当我处理字符集相关的问题时,我发现使用一个将字符串转换为Unicodes序列的实用程序非常有用,反之亦然。
result = "Hello World";
result = StringUnicodeEncoderDecoder.encodeStringToUnicodeSequence(result);
System.out.println(result);
result = StringUnicodeEncoderDecoder.decodeUnicodeSequenceToString(result);
System.out.println(result);此代码的输出是:
\u0048\u0065\u006c\u006c\u006f\u0020\u0057\u006f\u0072\u006c\u0064
Hello World包含此实用程序的库名为MgntUtils,可以在Maven Central或Github中找到,它以maven工件的形式出现,并带有源和javadoc。下面是类StringUnicodeEncoderDecoder的javadoc。下面是描述MgntUtils开源库的文章的链接:带有堆栈跟踪过滤、沉默字符串解析Unicode转换器和版本比较的开源Java库
https://stackoverflow.com/questions/57509967
复制相似问题