java 如何改变charset
修改 Java 字符集的方法
在 Java 中修改字符集(Charset)通常涉及字符串编码转换、文件读写或网络通信等场景。以下是几种常见方法:
字符串编码转换
使用 String 类的 getBytes 方法和 Charset 类实现字符串编码转换:
String original = "示例文本";
byte[] bytes = original.getBytes(Charset.forName("UTF-8")); // 转为UTF-8字节数组
String newString = new String(bytes, Charset.forName("ISO-8859-1")); // 用新字符集解码
文件读写指定字符集
通过 InputStreamReader 和 OutputStreamWriter 指定字符集读写文件:
// 读取文件(指定字符集)
try (BufferedReader reader = new BufferedReader(
new InputStreamReader(new FileInputStream("input.txt"), Charset.forName("GBK")))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
}
// 写入文件(指定字符集)
try (BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(new FileOutputStream("output.txt"), StandardCharsets.UTF_8))) {
writer.write("写入内容");
}
网络通信设置字符集
在 HTTP 请求或 Socket 通信中设置字符集:
// HTTP请求设置Content-Type
URLConnection connection = new URL("http://example.com").openConnection();
connection.setRequestProperty("Content-Type", "text/html; charset=UTF-8");
// Socket通信示例
Socket socket = new Socket("localhost", 8080);
PrintWriter out = new PrintWriter(
new OutputStreamWriter(socket.getOutputStream(), StandardCharsets.UTF_8), true);
out.println("发送数据");
JVM 默认字符集修改
通过启动参数修改 JVM 默认字符集(影响 file.encoding 系统属性):

java -Dfile.encoding=UTF-8 YourMainClass
注意事项
- 常用字符集名称包括
UTF-8、ISO-8859-1、GBK等,需确保名称正确。 - 使用
StandardCharsets类(Java 7+)可避免拼写错误,如StandardCharsets.UTF_8。 - 编码不一致可能导致乱码,建议统一使用 UTF-8。
以上方法覆盖了大多数需要修改字符集的场景,可根据实际需求选择合适的方式。






