温馨提示×

温馨提示×

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

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

java String 如何编码转换

发布时间:2026-10-06 00:17:27 来源:亿速云 阅读:100 作者:小樊 栏目:编程语言

在 Java 中,String 本身不存编码,它内部始终以 UTF-16 表示字符。
所谓“编码转换”,实际上是 String ↔ byte[] 之间的转换,通过指定字符集(Charset)完成。


一、核心原理

String  -> byte[]   : 编码(encode)
byte[]  -> String   : 解码(decode)

二、常见编码转换方式

✅ 1. String → byte[](编码)

String str = "中文";

// 转 UTF-8
byte[] utf8 = str.getBytes(StandardCharsets.UTF_8);

// 转 GBK
byte[] gbk = str.getBytes("GBK"); // 可能抛异常,推荐用 StandardCharsets

⚠️ 不推荐:

str.getBytes(); // 使用平台默认编码,不可控

✅ 2. byte[] → String(解码)

byte[] data = ...;

// UTF-8 解码
String s1 = new String(data, StandardCharsets.UTF_8);

// GBK 解码
String s2 = new String(data, "GBK");

⚠️ 编码和解码必须一致,否则会乱码。


三、典型场景示例

✅ UTF-8 → GBK

String str = "你好";
byte[] utf8 = str.getBytes(StandardCharsets.UTF_8);
String gbkStr = new String(utf8, StandardCharsets.UTF_8);
byte[] gbk = gbkStr.getBytes("GBK");

或更直接:

byte[] gbk = str.getBytes("GBK");

✅ 网络/文件乱码修复

// 假设原本是 GBK 编码的字节
byte[] gbkBytes = ...;

// 错误方式(用 UTF-8 解码)
String wrong = new String(gbkBytes, StandardCharsets.UTF_8);

// 修复
byte[] fix = wrong.getBytes(StandardCharsets.UTF_8);
String right = new String(fix, "GBK");

四、推荐写法(Java 7+)

import java.nio.charset.StandardCharsets;

byte[] bytes = str.getBytes(StandardCharsets.UTF_8);
String s = new String(bytes, StandardCharsets.UTF_8);

五、常见字符集

名称 说明
UTF-8 最通用
GBK 中文 Windows
ISO-8859-1 老系统
UTF-16 Java 内部

六、一句话总结

Java 的编码转换 = String 和 byte[] 之间的 charset 指定

如果你有具体场景(文件、HTTP、数据库、Socket),我可以给你更针对性的写法。

向AI问一下细节

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

AI
助
手