如何在 Java 中的 ISO-8859-1 和 UTF-8 之间进行转换?

有谁知道如何将字符串从ISO-8859-1转换为UTF-8并返回Java?

我从网络获取一个字符串并将其保存在RMS(J2ME)中,但我想保留特殊字符并从RMS获取字符串,但使用ISO-8859-1编码。我该怎么做?


答案 1

通常,您无法执行此操作。UTF-8 能够对任何 Unicode 码位进行编码。ISO-8859-1只能处理其中的一小部分。因此,从ISO-8859-1转码到UTF-8是没有问题的。从 UTF-8 倒退到 ISO-8859-1 将导致在找到不受支持的字符时出现在文本中“替换字符”( )。

要对文本进行转码:

byte[] latin1 = ...
byte[] utf8 = new String(latin1, "ISO-8859-1").getBytes("UTF-8");

byte[] utf8 = ...
byte[] latin1 = new String(utf8, "UTF-8").getBytes("ISO-8859-1");

您可以使用较低级别的字符集 API 来行使更多控制权。例如,可以在找到不可编码的字符时引发异常,或者对替换文本使用其他字符。


答案 2

这对我有用:(“üzüm bağları”是用土耳其语写的正确内容)

将 ISO-8859-1 转换为 UTF-8:

String encodedWithISO88591 = "üzüm baÄları";
String decodedToUTF8 = new String(encodedWithISO88591.getBytes("ISO-8859-1"), "UTF-8");
//Result, decodedToUTF8 --> "üzüm bağları"

将 UTF-8 转换为 ISO-8859-1

String encodedWithUTF8 = "üzüm bağları";
String decodedToISO88591 = new String(encodedWithUTF8.getBytes("UTF-8"), "ISO-8859-1");
//Result, decodedToISO88591 --> "üzüm baÄları"

推荐