java - 如何将字节数组解码为codePoint

标签 java character-encoding

Java 解码器提供了简单的方法将 byte[] 解码为 chars[],但众所周知,UTF8 字符可以由多个 java 字符组成。

因为java中的API开始使用int codePoint作为替代品,但似乎缺少将字节解码为codePoints的功能。

我的目标是将给定偏移量处的字节解码为单个 codePoint,不创建任何中间对象,例如 ArrayBuffer

有什么有效的方法可以实现这一点吗?

最佳答案

是的,Java 本身就为您提供了该工具。查看类 Character,方法 public static int codePointAt(char[] a, int index) (及其重载版本)这应该对您有帮助。另外,当我处理与字符集相关的问题时,我发现使用将字符串转换为 Unicode 序列的实用程序非常有帮助,反之亦然

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 开源库的文章的链接:Open Source Java library with stack trace filtering, Silent String parsing Unicode converter and Version comparison

关于java - 如何将字节数组解码为codePoint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57509967/

相关文章:

perl - 修复由 UTF-8 和 Windows-1252 组成的文件

php - 使用PHP的邮件功能时如何在收件人姓名中使用特殊字符

mysql - 指定的 key 太长;最大 key 长度为 1000 字节

asp.net - UTF-8 服务器编码会在 ASP.NET 站点上产生 � 字符

ios - 如果字符串值包含字符 '&',应用程序会崩溃

java - 实例化另一个对象

java - 异常搜索的通用实用程序

java - 为什么 JPA/hibernate 不能映射到 MySQL blob 类型?

java - Spring Data JPA 使用多个数据库时,No bean named "ConfigurationClassPostProcessor.importRegistry"发生异常

java - 最小优先级队列的复杂性问题