这段代码有什么问题?我制作了ISO8859字符串。所以大部分的ÄÜÜ都是一些krypooutput。没关系。但如何将它们转换回普通字符(UTF8或其他)?将ISO8859字符串转换为UTF8? ÄÜÜ=>Ã为什么?
String s = new String("Üü?öäABC".getBytes(), "ISO-8859-15");
System.out.println(s);
//ÃÃŒ?öÀABC => ok(?)
System.out.println(new String(s.getBytes(), "ISO-8859-15"));
//ÃÂÃÅ?öÃâ¬ABC => ok(?)
System.out.println(new String(s.getBytes(), "UTF-8"));
//ÃÃŒ?öÀABC => huh?
假设“krypooutput”表示来自加密函数的输出,为什么你试图将它转换为“普通字符”。这是不安全的,因为它会导致数据丢失。如果您需要该数据的可读形式,请使用十六进制编码或网址编码。 – 2011-05-30 10:41:32
Java中没有“ISO8859 String”这样的东西。请参阅http://balusc.blogspot.com/2009/05/unicode-how-to-get-characters-right.html – axtavt 2011-05-30 10:42:09
然后如何将输入字符串转换为“ÃÃŒ?â?ABC ABC”为正常? (如果我知道该字符串来自ISO8859文件)。 – Lissy 2011-05-30 10:47:52