温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java Unicode统一码如何编码

发布时间:2026-08-10 16:07:02 来源:亿速云 阅读:96 作者:小樊 栏目:编程语言

Java 中 **Unicode 统一码(Unicode)**的编码方式,主要涉及 字符在内存中的表示源文件编码、以及 与外部(文件/网络)交互时的编码。下面分层次说明。


一、Java 内部:Unicode 统一码如何编码

✅ Java 内部统一使用 UTF-16

  • Java 的 char 类型:
    • 2 个字节(16 位)
    • 表示 UTF-16 的一个代码单元
  • Java 的 Stringchar 在内存中都是 UTF-16 编码

Unicode 代码点与 UTF-16 的关系

Unicode 范围 表示方式
U+0000 ~ U+FFFF 一个 char 直接表示
U+10000 ~ U+10FFFF 使用 一对 surrogate(代理对),占两个 char

示例:

char c1 = 'A';          // U+0041
char c2 = '中';         // U+4E2D

二、Java 中的 Unicode 转义(\u 编码)

✅ 源代码中可以使用 \u 表示 Unicode

char c = '\u4e2d'; // 表示 '中'
String s = "\u0048\u0065\u006C\u006C\u006F"; // Hello

特点:

  • \u编译期处理
  • 任何地方 都可以使用(甚至注释、关键字中)
// \u000A 是换行符
System.out.println("Hello");

⚠️ 注意:滥用 \u 可能导致奇怪的编译错误。


三、Java 对外:字符与字节的转换(编码/解码)

Java 在 读写文件、网络通信 时,需要把:

  • UTF-16(内存)
  • 转换为
  • UTF-8 / GBK / ISO-8859-1 等(字节)

1️⃣ String → 字节(编码)

String s = "中文";
byte[] utf8 = s.getBytes("UTF-8");
byte[] gbk  = s.getBytes("GBK");

2️⃣ 字节 → String(解码)

String s1 = new String(utf8, "UTF-8");
String s2 = new String(gbk, "GBK");

推荐始终显式指定编码


四、Java 源文件本身的编码

✅ Java 源文件本身不是强制 UTF-16

  • .java 文件可以是:
    • UTF-8(推荐)
    • GBK
    • 其他编码
  • 编译时需要知道源文件编码
javac -encoding UTF-8 Hello.java

⚠️ 如果编码不一致,容易出现乱码。


五、Java 与 UTF-8 / UTF-16 / UTF-32 的关系总结

场景 编码
Java 内存(char / String) UTF-16
.class 文件 UTF-8
源代码(推荐) UTF-8
文件 / 网络传输(推荐) UTF-8
Unicode 转义 \uXXXX

六、常见误区

Java 的 char 是 UTF-8
✅ 错,是 UTF-16

一个 char 一定能表示一个 Unicode 字符
✅ 错,辅助平面字符需要两个 char


七、关键点一句话总结

Java 内部使用 UTF-16 表示 Unicode,对外通过指定字符集(如 UTF-8)进行编码与解码。

如果你愿意,我也可以:

  • Unicode 辅助平面(emoji)在 Java 中的处理
  • 对比 Java vs JavaScript 的 Unicode 编码差异
  • 结合 UTF-8 字节结构 详细图解
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI