当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何在Java中转换ISO-8859-1和UTF-8?》经验,为你挑选了3个好方法。

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

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



1> erickson..:

一般来说,你不能这样做.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 进行更多控制.例如,您可以在找到无法编码的字符时引发异常,或者对替换文本使用不同的字符.



2> Bahadir Tasd..:

哪个对我 有用:("üzümbağ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ı"



3> Johannes Wei..:

如果你有String,你可以这样做:

String s = "test";
try {
    s.getBytes("UTF-8");
} catch(UnsupportedEncodingException uee) {
    uee.printStackTrace();
}

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

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

byte[] bs = ...;
String s;
try {
    s = new String(bs, encoding);
} catch(UnsupportedEncodingException uee) {
    uee.printStackTrace();
}

甚至更好(感谢erickson)使用InputStreamReader:

InputStreamReader isr;
try {
     isr = new InputStreamReader(inputStream, encoding);
} catch(UnsupportedEncodingException uee) {
    uee.printStackTrace();
}

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有