📜  如何在 java 中将 iso-8859-1 转换为 utf-8(1)

📅  最后修改于: 2023-12-03 15:38:17.317000             🧑  作者: Mango

如何在 Java 中将 iso-8859-1 转换为 utf-8

在 Java 中,如果我们需要将 iso-8859-1 编码转换为 utf-8 编码,可以使用 Java 内置的一些类库来实现。下面我们将介绍两种常用的方法。

使用 String 类的原生方法

Java 中的 String 类提供了一些原生方法可以用来完成编码的转换。

String str = "编码转换示例";
byte[] isoBytes = str.getBytes("iso-8859-1"); // 将 utf-8 编码字符串转换为 iso-8859-1 编码字节数组
String utf8Str = new String(isoBytes, "utf-8"); // 将 iso-8859-1 编码字节数组转换为 utf-8 编码字符串

上面的代码中,首先我们将一个 utf-8 编码的字符串转换为 iso-8859-1 编码的字节数组,然后再将这个字节数组通过指定的 utf-8 编码格式转换为 utf-8 编码字符串。

使用 Charset 类

Charset 类是 Java 1.4 引入的,它提供了更加灵活的编码转换机制。

String str = "编码转换示例";
Charset isoCharset = Charset.forName("iso-8859-1");
Charset utf8Charset = Charset.forName("utf-8");
ByteBuffer inputBuffer = ByteBuffer.wrap(str.getBytes(isoCharset));
CharBuffer data = isoCharset.decode(inputBuffer);
ByteBuffer outputBuffer = utf8Charset.encode(data);
String utf8Str = new String(outputBuffer.array(), utf8Charset);

上面的代码中,我们首先获取标准的 iso-8859-1 和 utf-8 编码的 Charset 实例。然后将 utf-8 字符串转换为 iso-8859-1 编码的 ByteBuffer,接着将这个 ByteBuffer 转换为 CharBuffer,并解码成标准的 unicode 字符(CharBuffer)。最后将这个 CharBuffer 转换为 utf-8 编码的 ByteBuffer,再将其转换为 utf-8 编码的字符串。

总的来说,第二种方法虽然写起来比第一种麻烦,但是它更加灵活,可以应对更加复杂的编码转换需求。