首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Java中转换ISO-8859-1和UTF-8?

在Java中,可以使用以下方法将ISO-8859-1和UTF-8之间进行转换:

  1. 使用String类的getBytes()String构造函数进行转换:
代码语言:java
复制
// 将ISO-8859-1转换为UTF-8
String iso8859_1 = "ISO-8859-1字符串";
byte[] iso8859_1_bytes = iso8859_1.getBytes("ISO-8859-1");
String utf8 = new String(iso8859_1_bytes, "UTF-8");

// 将UTF-8转换为ISO-8859-1
String utf8 = "UTF-8字符串";
byte[] utf8_bytes = utf8.getBytes("UTF-8");
String iso8859_1 = new String(utf8_bytes, "ISO-8859-1");
  1. 使用Charset类进行转换:
代码语言:java
复制
import java.nio.charset.Charset;

// 将ISO-8859-1转换为UTF-8
String iso8859_1 = "ISO-8859-1字符串";
byte[] iso8859_1_bytes = iso8859_1.getBytes(Charset.forName("ISO-8859-1"));
String utf8 = new String(iso8859_1_bytes, Charset.forName("UTF-8"));

// 将UTF-8转换为ISO-8859-1
String utf8 = "UTF-8字符串";
byte[] utf8_bytes = utf8.getBytes(Charset.forName("UTF-8"));
String iso8859_1 = new String(utf8_bytes, Charset.forName("ISO-8859-1"));
  1. 使用InputStreamReaderOutputStreamWriter进行转换:
代码语言:java
复制
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.StringReader;
import java.io.StringWriter;

// 将ISO-8859-1转换为UTF-8
String iso8859_1 = "ISO-8859-1字符串";
BufferedReader reader = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(iso8859_1.getBytes("ISO-8859-1")), "ISO-8859-1"));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new ByteArrayOutputStream(), "UTF-8"));
String utf8 = "";
String line;
while ((line = reader.readLine()) != null) {
    writer.write(line);
    writer.newLine();
}
writer.flush();
utf8 = new String(((ByteArrayOutputStream) writer.getOutputStream()).toByteArray(), "UTF-8");

// 将UTF-8转换为ISO-8859-1
String utf8 = "UTF-8字符串";
BufferedReader reader = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(utf8.getBytes("UTF-8")), "UTF-8"));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new ByteArrayOutputStream(), "ISO-8859-1"));
String iso8859_1 = "";
String line;
while ((line = reader.readLine()) != null) {
    writer.write(line);
    writer.newLine();
}
writer.flush();
iso8859_1 = new String(((ByteArrayOutputStream) writer.getOutputStream()).toByteArray(), "ISO-8859-1");

注意:在实际应用中,应该尽量避免使用String类的getBytes()String构造函数进行转换,因为这种方法可能会导致乱码。建议使用Charset类或InputStreamReaderOutputStreamWriter进行转换。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券