为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

ibeautiful 2019-10-17 14:27:00
有谁知道如何将字符串从ISO-8859-1转换为UTF-8,然后再转换回Java?我从网络上获取一个字符串并将其保存在RMS(J2ME)中,但我想保留特殊字符并从RMS中获取字符串,但要使用ISO-8859-1编码。我该怎么做呢?
查看完整描述

3 回答

?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

通常,您无法执行此操作。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");

您可以使用较低级别的CharsetAPI 进行更多控制。例如,当发现无法编码的字符时,您可以引发异常,或者将其他字符用于替换文本。


查看完整回答
反对 回复 2019-10-17
?
炎炎设计

TA贡献1808条经验 获得超4个赞

如果您有String,则可以执行以下操作:


String s = "test";

try {

    s.getBytes("UTF-8");

} catch(UnsupportedEncodingException uee) {

    uee.printStackTrace();

}

如果你有一个“破” String,你做错了什么,转换String到String另一种编码defenetely不是要走的路!您可以将a转换String为a byte[],反之亦然(给定编码)。在Java String中,AFAIK编码有,UTF-16但这是实现细节。


假设你有一个InputStream,你可以在阅读byte[],然后将其转换成一个String使用


byte[] bs = ...;

String s;

try {

    s = new String(bs, encoding);

} catch(UnsupportedEncodingException uee) {

    uee.printStackTrace();

}

甚至更好(由于埃里克森)使用InputStreamReader如下:


InputStreamReader isr;

try {

     isr = new InputStreamReader(inputStream, encoding);

} catch(UnsupportedEncodingException uee) {

    uee.printStackTrace();

}


查看完整回答
反对 回复 2019-10-17
  • 3 回答
  • 0 关注
  • 2806 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信