java如何转码
Java 字符串转码方法
在Java中处理字符串转码通常涉及字符编码的转换,常见的场景包括处理不同编码的文本文件、网络数据传输或数据库存储。以下是几种常见的转码方法:
使用String类的构造方法和getBytes方法
String originalString = "示例文本";
byte[] bytes = originalString.getBytes("UTF-8"); // 按源编码获取字节
String newString = new String(bytes, "GBK"); // 按目标编码构造字符串
使用Charset类
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
String str = "测试内容";
byte[] isoBytes = str.getBytes(StandardCharsets.ISO_8859_1);
String utf8Str = new String(isoBytes, StandardCharsets.UTF_8);
文件读写转码
处理文件时,可以通过指定字符集实现转码:

使用InputStreamReader和OutputStreamWriter
try (BufferedReader reader = new BufferedReader(
new InputStreamReader(new FileInputStream("input.txt"), "GBK"));
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(new FileOutputStream("output.txt"), "UTF-8"))) {
String line;
while ((line = reader.readLine()) != null) {
writer.write(line);
writer.newLine();
}
}
URL编码与解码
处理URL参数时需要特殊编码:

使用URLEncoder和URLDecoder
import java.net.URLEncoder;
import java.net.URLDecoder;
String encoded = URLEncoder.encode("参数值", "UTF-8");
String decoded = URLDecoder.decode(encoded, "UTF-8");
常见问题解决方案
乱码处理 当出现乱码时,通常需要确认原始编码格式。可通过尝试常见编码格式进行排查:
String[] encodings = {"GBK", "UTF-8", "ISO-8859-1"};
for (String enc : encodings) {
try {
String testStr = new String(byteArray, enc);
if (testStr.contains("预期字符")) {
System.out.println("正确编码:" + enc);
break;
}
} catch (Exception e) {}
}
BOM头处理 某些UTF-8文件可能包含BOM头,需要特殊处理:
String content = Files.readString(Paths.get("file.txt"));
if (content.startsWith("\uFEFF")) {
content = content.substring(1);
}
转码操作需要注意异常处理,建议始终捕获UnsupportedEncodingException。对于现代Java版本(1.7+),推荐使用StandardCharsets中定义的常量替代字符串编码名称,以避免拼写错误。






