java中字符编码之间的转换

时间:2014-12-04 14:06:11

标签: java encoding

我无法了解如何进行下面的转换

String s = "Här har du!  â\u0080\u0093 Hur väl kan du snacka?";
t = convert(s);
// t should be "Här har du! â Hur väl kan du snacka?"

我找不到如何将s翻译成t。有谁知道如何用Java做到这一点?

2 个答案:

答案 0 :(得分:2)

试试这样的事情;

     String s = "Här har du!  â\u0080\u0093 Hur väl kan du snacka?";        
     byte[] bytes = s.getBytes("ISO-8859-1");
     String str  = new String(bytes, "UTF-8");

输出是;

    Här har du!  – Hur väl kan du snacka?

以下代码;

public static void main (String[] args) throws java.lang.Exception
{
     String s = "Här har du!  â\u0080\u0093 Hur väl kan du snacka?";        
     byte[] bytes = s.getBytes("ISO-8859-1");
     String str  = new String(bytes, "UTF-8");
     System.out.println(str);
}

答案 1 :(得分:1)

正如我在评论中已经提到的,看起来您的字符串s 已经损坏。正确的解决方案是首先修复s所在的位置。看起来你正在使用一些单字节编码解释什么是真正的“UTF-8”编码字符串(“ISO8859-1”似乎适用于你的测试字符串)。

如果你原来的字符串损坏中没有丢失数据,你可以使用以下方法对当前字符串进行修补:

    String s = "Här har du!  â\u0080\u0093 Hur väl kan du snacka?";        
    byte[] b = s.getBytes("ISO-8859-1");
    String t = new String(b, "UTF-8");