java中如何转码
转码的基本概念
在Java中,转码通常指的是将一种字符编码转换为另一种字符编码。常见的场景包括处理不同编码的文本文件、网络数据传输等。
使用String类的getBytes方法
String类提供了getBytes方法,可以指定目标编码进行转换:

String original = "示例文本";
byte[] utf8Bytes = original.getBytes("UTF-8");
String newString = new String(utf8Bytes, "ISO-8859-1");
使用Charset类
Java.nio.charset包提供了更灵活的编码转换方式:
Charset utf8Charset = Charset.forName("UTF-8");
Charset isoCharset = Charset.forName("ISO-8859-1");
ByteBuffer inputBuffer = ByteBuffer.wrap(original.getBytes());
CharBuffer data = utf8Charset.decode(inputBuffer);
ByteBuffer outputBuffer = isoCharset.encode(data);
byte[] outputData = outputBuffer.array();
处理文件编码转换
使用InputStreamReader和OutputStreamWriter可以方便地进行文件编码转换:

try (InputStreamReader reader = new InputStreamReader(
new FileInputStream("input.txt"), "GBK");
OutputStreamWriter writer = new OutputStreamWriter(
new FileOutputStream("output.txt"), "UTF-8")) {
char[] buffer = new char[1024];
int length;
while ((length = reader.read(buffer)) != -1) {
writer.write(buffer, 0, length);
}
}
处理URL编码
对于URL编码转换,可以使用URLEncoder和URLDecoder类:
String encoded = URLEncoder.encode("参数值", "UTF-8");
String decoded = URLDecoder.decode(encoded, "UTF-8");
常见问题处理
转换过程中可能会遇到UnsupportedEncodingException,应确保指定的编码名称正确。建议使用StandardCharsets类中的常量来避免拼写错误:
byte[] bytes = original.getBytes(StandardCharsets.UTF_8);
性能考虑
对于大量数据的转换,使用ByteBuffer和CharBuffer可能比直接使用String.getBytes()更高效。考虑使用内存映射文件(MappedByteBuffer)处理大文件。






