编码UTF8的Java问题

时间:2014-01-09 18:11:11

标签: java

我认为解释我的问题的最简单方法是用一个小例子:

我在开头的字符串是:Pâtes,结果应为:Pâtes。我得到的结果仍然是Pâtes我该如何解决这个问题?

这里是代码:

private String encode(String string) {
    try { 
        byte ptext[] =string.getBytes("UTF8");
        string = new String(ptext, "UTF8");   
    }
    catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }     
    return string;      
}

1 个答案:

答案 0 :(得分:1)

您的代码存在两个问题。第一个是您使用UTF8,但正确的字符集是UTF-8

第二个是你基本上是在执行no op。通过调用byte ptext[] =string.getBytes("UTF-8");,您说这个字符串是UTF-8。然后将它转换为UTF-8,它已经是。

我认为您的意思是输入为ISO-8859-1,您希望将其转换为UTF-8。 (这符合您给出的示例输入和输出)。

尝试:

private String encode(String string) {
    try { 
        byte ptext[] = string.getBytes("ISO-8859-1");
        string = new String(ptext, "UTF-8");   
    }
    catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }     
    return string;      
}

这假定您的初始字符串最初是从某处读取的,只包含ISO-8859-1个字符。如评论中所述,您应该尝试确保从源正确加载数据(即,它仍然只是一个字节数组)。