java中无内置字符集常量类,开发者需自定义public static final string常量(如utf_8="utf-8")统一管理标准编码名,禁止硬编码或拼接,按项目规模存放于二方库、constant包或模块内。

Java 中没有内置的“字符集常量类”,所谓“字符集常量类”是开发者为统一管理编码名称(如 "UTF-8"、"GBK"、"ISO-8859-1")而自定义的工具类,目的是避免散落在代码各处的字符串字面量(即“魔法字符串”),提升可维护性与安全性。
字符集常量应定义为 public static final String
这类常量本质是字符串字面量的封装,必须用 public static final String 修饰,确保全局可见、不可变、不可重写:
- 不能用
char或int表示,因为字符集名是完整字符串,不是单个字符或数字 - 不建议用枚举(
enum),除非需附加行为(如校验合法性、获取别名),否则过度设计 - 命名遵循常量规范:全大写 + 下划线分隔,例如
UTF_8、GB2312
推荐放在专用常量类中,按层级复用
根据项目规模选择存放位置,避免重复定义:
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
- 跨多个微服务/应用共享 → 放在二方库(如
common-core)的CharsetConstants类中 - 单体应用内通用 → 放在主模块的
constant包下,如com.example.app.constant.CharsetConstants - 仅某模块内部使用 → 定义在对应包的
package-info.java或独立XXXCharset工具类中
内容只包含标准编码名,不带空格、不加前缀
常量值必须严格匹配 JDK 和 IANA 注册的标准名称,大小写敏感,不额外拼接后缀或空格:
- ✅ 正确:
public static final String UTF_8 = "UTF-8"; - ✅ 正确:
public static final String GBK = "GBK"; - ❌ 错误:
public static final String UTF8 = "utf8";(小写、无连字符,JDK 不识别) - ❌ 错误:
public static final String UTF_8_WITH_BOM = "UTF-8-BOM";(非标准名,会抛UnsupportedEncodingException)
使用时直接引用,禁止硬编码或拼接
所有涉及 String.getBytes(Charset)、new InputStreamReader(in, charset)、Files.readAllLines(path, charset) 等 API 的地方,必须通过常量类访问:
- ✅ 推荐:
str.getBytes(CharsetConstants.UTF_8) - ✅ 推荐:
new InputStreamReader(in, Charset.forName(CharsetConstants.GB2312)) - ❌ 禁止:
str.getBytes("UTF-8")(魔法字符串) - ❌ 禁止:
"UTF" + "-" + "8"(运行期拼接,无法编译期校验)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










