如何在 Java 中利用 Character.UnicodeBlock 识别一个字符变量是否属于中文汉字区间

夏宇君_4978

夏宇君_4978

2026-05-02

812人浏览

原创

Java中判断汉字应优先用CJK_UNIFIED_IDEOGRAPHS区块(U+4E00–U+9FFF),辅以EXTENSION_A/B/C/D/E/F/G等扩展区,并排除CJK部首、标点、假名等非汉字字符,对代理对需用codePointAt()处理。

如何在 java 中利用 character.unicodeblock 识别一个字符变量是否属于中文汉字区间

在 Java 中,可以通过 Character.UnicodeBlock 判断一个字符是否属于中文汉字(即中日韩统一汉字,CJK Unified Ideographs)区间,但要注意:UnicodeBlock 只能粗略判断,不能 100% 精确覆盖所有汉字(如扩展区汉字需额外处理),也不能排除部首、标点等非汉字字符。

识别核心汉字区块(基本常用汉字)

绝大多数简体、繁体汉字落在 Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS 区块内(U+4E00–U+9FFF)。这是最常用、最可靠的判断依据:

  • 该区块包含约 20,902 个常用汉字,覆盖 GB2312、Big5 主要字集
  • 使用方式简单:Character.UnicodeBlock.of(ch) == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
  • 注意:此判断对单个 char 有效;若字符是代理对(如某些扩展汉字),char 类型无法完整表示,需改用 int 码点(见下文)

覆盖扩展汉字(A/B/C/D/E/F/G 区)

现代中文文本可能含扩展区汉字(如“?”“?”),它们分布在多个 UnicodeBlock 中:

  • CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A(U+3400–U+4DBF)
  • CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B(U+20000–U+2A6DF),需用 Character.codePointAt() 获取完整码点
  • EXTENSION_C(U+2A700–U+2B73F)、D(U+2B740–U+2B81F)、E(U+2B820–U+2CEAF)等
  • 建议组合判断:block == CJK_UNIFIED_IDEOGRAPHS || block == CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A || ...

避免误判:排除 CJK 相关但非汉字的字符

Unicode 中 CJK 相关区块还包含标点、部首、兼容汉字、平假名、片假名等,若只要“严格汉字”,需额外过滤:

Java注释规范Skills
Java注释规范Skills

当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。

下载
  • 排除部首:Character.UnicodeBlock.CJK_RADICALS_SUPPLEMENT、CJK_COMPATIBILITY_IDEOGRAPHS(含旧字形/异体字,按需保留)
  • 排除假名:HIRAGANA、KATAKANA
  • 排除 CJK 符号和标点:CJK_SYMBOLS_AND_PUNCTUATION(如《》、。、?)
  • 可结合 Character.isLetter(ch) 辅助判断(汉字返回 true,但部分扩展汉字或生僻字可能返回 false)

推荐写法(兼顾准确性与兼容性)

以下是一个实用的静态方法,支持 BMP 和增补字符(如扩展 B 区汉字):

public static boolean isChineseChar(char ch) {
    Character.UnicodeBlock block = Character.UnicodeBlock.of(ch);
    return block == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
        || block == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A;
}

public static boolean isChineseCodePoint(int cp) {
    Character.UnicodeBlock block = Character.UnicodeBlock.of(cp);
    return block == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
        || block == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
        || block == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B
        || block == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C
        || block == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D
        || block == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E
        || block == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F
        || block == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_G;
}

// 使用示例(处理字符串)
public static boolean containsChinese(String str) {
    for (int i = 0; i 

不复杂但容易忽略的是:Java 的 char 是 UTF-16 单元,遇到增补字符(码点 ≥ 0x10000)会拆成两个 char(代理对),直接传入 Character.UnicodeBlock.of(char) 会得到 PRIVATE_USE_AREA 等错误结果 —— 务必先转为码点再判断。

Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南

相关专题

更多
java
java

Java是一个通用术语,用于表示Java软件及其组件,包括“Java运行时环境 (JRE)”、“Java虚拟机 (JVM)”以及“插件”。php中文网还为大家带了Java相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2023.06.15

11617

6

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

2023.07.05

8722

9

java自学难吗
java自学难吗

Java自学并不难。Java语言相对于其他一些编程语言而言,有着较为简洁和易读的语法,本专题为大家提供java自学难吗相关的文章,大家可以免费体验。

2023.07.31

7492

8

java配置jdk环境变量
java配置jdk环境变量

Java是一种广泛使用的高级编程语言,用于开发各种类型的应用程序。为了能够在计算机上正确运行和编译Java代码,需要正确配置Java Development Kit(JDK)环境变量。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.08.01

1244

3

java保留两位小数
java保留两位小数

Java是一种广泛应用于编程领域的高级编程语言。在Java中,保留两位小数是指在进行数值计算或输出时,限制小数部分只有两位有效数字,并将多余的位数进行四舍五入或截取。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.08.02

988

3

java基本数据类型
java基本数据类型

java基本数据类型有:1、byte;2、short;3、int;4、long;5、float;6、double;7、char;8、boolean。本专题为大家提供java基本数据类型的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.02

1476

5

java有什么用
java有什么用

java可以开发应用程序、移动应用、Web应用、企业级应用、嵌入式系统等方面。本专题为大家提供java有什么用的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.02

3049

5

java在线网站
java在线网站

Java在线网站是指提供Java编程学习、实践和交流平台的网络服务。近年来,随着Java语言在软件开发领域的广泛应用,越来越多的人对Java编程感兴趣,并希望能够通过在线网站来学习和提高自己的Java编程技能。php中文网给大家带来了相关的视频、教程以及文章,欢迎大家前来学习阅读和下载。

2023.08.03

20311

3

配置java环境变量
配置java环境变量

配置Java环境变量是为了让操作系统能够识别和使用Java的相关命令和功能。本专题为大家提供配置java环境变量相关文章,帮助大家解决问题。

2023.08.03

1335

8

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
dev.java 官方:Learn Java
dev.java 官方:Learn Java

共0课时 | 0人学习

Java JDBC数据库连接官方教程
Java JDBC数据库连接官方教程

共0课时 | 0人学习