猿问

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

有谁知道如何将字符串从ISO-8859-1转换为UTF-8,然后再转换回Java?

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


ibeautiful
浏览 2807回答 3
3回答

小唯快跑啊

通常,您无法执行此操作。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 进行更多控制。例如,当发现无法编码的字符时,您可以引发异常,或者将其他字符用于替换文本。

炎炎设计

如果您有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();}
随时随地看视频慕课网APP

相关分类

Java
我要回答