java 如何编码方式
编码方式设置
在Java中,编码方式通常涉及字符集(Charset)的处理,尤其在读写文件或网络传输时。以下是常见的编码操作方式:
文件读写编码设置
使用 InputStreamReader 和 OutputStreamWriter 指定编码:

import java.io.*;
import java.nio.charset.StandardCharsets;
// 读取文件(UTF-8编码)
try (BufferedReader reader = new BufferedReader(
new InputStreamReader(new FileInputStream("input.txt"), StandardCharsets.UTF_8))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
}
// 写入文件(GBK编码)
try (BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(new FileOutputStream("output.txt"), "GBK"))) {
writer.write("示例文本");
}
字符串与字节数组转换
通过 String 的构造方法和 getBytes() 方法指定编码:

// 字符串转字节数组(UTF-8)
String text = "示例";
byte[] utf8Bytes = text.getBytes(StandardCharsets.UTF_8);
// 字节数组转字符串(GBK)
String decodedText = new String(utf8Bytes, "GBK");
URL编码与解码
使用 java.net.URLEncoder 和 URLDecoder:
import java.net.URLEncoder;
import java.net.URLDecoder;
// URL编码
String encoded = URLEncoder.encode("参数=值", StandardCharsets.UTF_8);
System.out.println(encoded); // 输出:%E5%8F%82%E6%95%B0%3D%E5%80%BC
// URL解码
String decoded = URLDecoder.decode(encoded, StandardCharsets.UTF_8);
数据库连接编码
在JDBC连接URL中指定字符集(以MySQL为例):
String url = "jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=UTF-8";
常见编码问题解决
- 乱码问题:确保输入流、输出流和字符串转换的编码一致。
- 默认编码获取:
Charset.defaultCharset(); // 获取JVM默认编码 - 支持的编码列表:
Charset.availableCharsets().keySet(); // 列出所有可用编码
注意事项
- 优先使用
StandardCharsets常量(如UTF_8),而非字符串(如"UTF-8")避免拼写错误。 - 处理中文时推荐使用
UTF-8,避免ISO-8859-1等不支持多字节的编码。






