首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Java中如何在ISO-8859-1和UTF-8之间进行转换?

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

Stack Overflow用户
提问于 2009-03-16 21:09:50
回答 6查看 268.7K关注 0票数 77

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

我从web上获取一个字符串,并将其保存在均方根(J2ME)中,但我希望保留特殊字符,并使用ISO-8859-1编码从均方根中获取字符串。我该怎么做呢?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-03-16 22:21:00

一般来说,您不能这样做。UTF-8能够对任何Unicode码位进行编码。ISO-8859-1只能处理其中的一小部分。因此,从ISO-8859-1到UTF-8的转码是没有问题的。当发现不支持的字符时,从UTF-8向ISO-8859-1倒退会导致“替换字符”(�)出现在您的文本中。

要对文本进行代码转换:

代码语言:javascript
复制
byte[] latin1 = ...
byte[] utf8 = new String(latin1, "ISO-8859-1").getBytes("UTF-8");

代码语言:javascript
复制
byte[] utf8 = ...
byte[] latin1 = new String(utf8, "UTF-8").getBytes("ISO-8859-1");

您可以通过使用较低级别的Charset API进行更多控制。例如,可以在发现不可编码的字符时引发异常,或者使用不同的字符替换文本。

票数 111
EN

Stack Overflow用户

发布于 2009-03-16 21:30:47

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

代码语言:javascript
复制
String s = "test";
try {
    s.getBytes("UTF-8");
} catch(UnsupportedEncodingException uee) {
    uee.printStackTrace();
}

如果你有一个“坏掉的”String,你做错了什么,将String转换成另一种编码的String显然不是正确的做法!您可以将String转换为byte[],反之亦然(给定编码)。在Java中,String是用UTF-16编码的,但这只是一个实现细节。

假设您有一个InputStream,您可以读取byte[],然后使用以下命令将其转换为String

代码语言:javascript
复制
byte[] bs = ...;
String s;
try {
    s = new String(bs, encoding);
} catch(UnsupportedEncodingException uee) {
    uee.printStackTrace();
}

或者更好地(感谢erickson)像这样使用InputStreamReader

代码语言:javascript
复制
InputStreamReader isr;
try {
     isr = new InputStreamReader(inputStream, encoding);
} catch(UnsupportedEncodingException uee) {
    uee.printStackTrace();
}
票数 6
EN

Stack Overflow用户

发布于 2016-06-14 01:24:57

下面是一种简单的字符串输出方法(我创建了一个方法来完成此操作):

代码语言:javascript
复制
public static String (String input){
    String output = "";
    try {
        /* From ISO-8859-1 to UTF-8 */
        output = new String(input.getBytes("ISO-8859-1"), "UTF-8");
        /* From UTF-8 to ISO-8859-1 */
        output = new String(input.getBytes("UTF-8"), "ISO-8859-1");
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }
    return output;
}
// Example
input = "Música";
output = "Música";
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/652161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档