You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java中获取字符0-1114112范围的Unicode数值(等效charAt(0))?

Java中获取完整Unicode码点的等效实现

我刚好碰过类似的跨语言加密兼容问题,给你一个精准适配需求的解决方案:

核心问题说明

PHP里如果要获取字符串首字符的完整Unicode码点(范围0-1114112),一般会用mb_ord(mb_substr($str, 0, 1, 'UTF-8'))这类逻辑;而Java默认的charAt(0)只能返回UTF-16编码的单个char值(仅覆盖0-65535的BMP平面字符),没法处理🍎这类补充平面的字符,所以得用专门的码点获取方法。

直接可用的Java实现

public static int getFirstCharUnicodeCodePoint(String input) {
    if (input == null || input.isEmpty()) {
        // 可根据你的加密库需求调整:抛出异常/返回0等默认值
        throw new IllegalArgumentException("输入字符串不能为空或null");
    }
    // codePointAt(0)返回完整的Unicode码点,范围正好是0-1114112
    return input.codePointAt(0);
}

兼容性验证

  • 和PHP对齐:PHP中执行mb_ord(mb_substr($yourString, 0, 1, 'UTF-8')),得到的数值和上面Java方法的返回值完全一致。
  • 和AutoIt对齐:AutoIt中可以通过StringToUnicodeArray结合代理对处理来获取完整码点,比如先提取首字符的Unicode单元,再组合成完整码点,确保和Java、PHP的数值匹配。

注意事项

  • 确保所有语言的字符串统一使用UTF-8编码,避免编码不一致导致码点数值偏差。
  • 空字符串的处理逻辑要和你的加密库整体行为一致,比如加密时不允许空输入就抛出异常,否则返回默认值。

内容的提问来源于stack exchange,提问作者Zachary Litzinger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:36:23