在 Java 中进行编码格式转换有多种方式,以下是其中几种常见的实现方式,每种方式都包含了详细的步骤流程和示例代码。
注意:以下示例代码中的依赖版本可能已经过时,建议根据实际情况选择最新的版本。
步骤流程:
Charset
对象,表示原始编码和目标编码。Charset
对象创建 CharsetEncoder
和 CharsetDecoder
对象。CharsetEncoder
将原始字节序列编码为字节流,然后使用 CharsetDecoder
将字节流解码为目标字符串。示例代码:
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.charset.Charset;
import java.nio.charset.CharsetDecoder;
import java.nio.charset.CharsetEncoder;
public class CharsetConversionExample {
public static void main(String[] args) throws Exception {
String originalText = "Hello, 你好!";
Charset sourceCharset = Charset.forName("UTF-8");
Charset targetCharset = Charset.forName("ISO-8859-1");
ByteBuffer byteBuffer = sourceCharset.encode(originalText);
CharBuffer charBuffer = targetCharset.decode(byteBuffer);
String convertedText = charBuffer.toString();
System.out.println("Converted Text: " + convertedText);
}
}
步骤流程:
InputStream
用于读取原始字节流。InputStreamReader
将原始字节流转换为字符流,并指定源编码。OutputStream
用于写入目标字节流。OutputStreamWriter
将字符流转换为字节流,并指定目标编码。示例代码:
import java.io.*;
public class InputStreamReaderExample {
public static void main(String[] args) throws Exception {
String inputFile = "input.txt";
String outputFile = "output.txt";
String sourceEncoding = "UTF-8";
String targetEncoding = "ISO-8859-1";
try (InputStream inputStream = new FileInputStream(inputFile);
OutputStream outputStream = new FileOutputStream(outputFile);
InputStreamReader reader = new InputStreamReader(inputStream, sourceEncoding);
OutputStreamWriter writer = new OutputStreamWriter(outputStream, targetEncoding)) {
char[] buffer = new char[1024];
int bytesRead;
while ((bytesRead = reader.read(buffer)) != -1) {
writer.write(buffer, 0, bytesRead);
}
}
}
}
添加依赖(Maven):
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>
步骤流程:
IOUtils
类的 toInputStream
方法将字符串转换为原始字节流。IOUtils
类的 toString
方法将字节流转换为目标字符串,同时指定编码。示例代码:
import org.apache.commons.io.IOUtils;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
public class CommonsIOExample {
public static void main(String[] args) throws Exception {
String originalText = "Hello, 你好!";
String targetEncoding = "ISO-8859-1";
try (InputStream inputStream = IOUtils.toInputStream(originalText, StandardCharsets.UTF_8)) {
String convertedText = IOUtils.toString(inputStream, targetEncoding);
System.out.println("Converted Text: " + convertedText);
}
}
}
这些方法提供了多种方式在 Java 中进行编码格式转换。你可以根据实际需求和项目的要求选择最适合的方式。