Java 中 **Unicode 统一码(Unicode)**的编码方式,主要涉及 字符在内存中的表示、源文件编码、以及 与外部(文件/网络)交互时的编码。下面分层次说明。
char 类型:
String、char 在内存中都是 UTF-16 编码| Unicode 范围 | 表示方式 |
|---|---|
| U+0000 ~ U+FFFF | 一个 char 直接表示 |
| U+10000 ~ U+10FFFF | 使用 一对 surrogate(代理对),占两个 char |
示例:
char c1 = 'A'; // U+0041
char c2 = '中'; // U+4E2D
\u 表示 Unicodechar c = '\u4e2d'; // 表示 '中'
String s = "\u0048\u0065\u006C\u006C\u006F"; // Hello
特点:
\u 是 编译期处理// \u000A 是换行符
System.out.println("Hello");
⚠️ 注意:滥用 \u 可能导致奇怪的编译错误。
Java 在 读写文件、网络通信 时,需要把:
String s = "中文";
byte[] utf8 = s.getBytes("UTF-8");
byte[] gbk = s.getBytes("GBK");
String s1 = new String(utf8, "UTF-8");
String s2 = new String(gbk, "GBK");
✅ 推荐始终显式指定编码
.java 文件可以是:
javac -encoding UTF-8 Hello.java
⚠️ 如果编码不一致,容易出现乱码。
| 场景 | 编码 |
|---|---|
| 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)进行编码与解码。
如果你愿意,我也可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。