试试这个,
public static String getEncoding(String str)
{
String[] encodings={"iso8859_1","gb2312","utf-8"};
String encoding="";
try
{
for(int i=0;i<encodings.length;i++)
{
if(str.equals(new String(str.getBytes(),encodings[i])))
return encodings[i];
}
}
catch(Exception e)
{
//e.printStackTrace();
}
return "Unknown";
}
public static String getEncoding(String str)
{
String[] encodings={"iso8859_1","gb2312","utf-8"};
String encoding="";
try
{
for(int i=0;i<encodings.length;i++)
{
if(str.equals(new String(str.getBytes(),encodings[i])))
return encodings[i];
}
}
catch(Exception e)
{
//e.printStackTrace();
}
return "Unknown";
}
倘若str本身是iso8859-1的,那么按gb2312对它编码后,要解回原来的字符串是用gb2312还是iso8859-1呢?按照你的算法的思路,如果str是用iso8859-1编的,那么被转成字节流后,只有用iso8859-1才能转回来,可是问题是转成字节流的时候并没有指定按什么编码转,真迷湖啊,还望多多指点!
上面几种方案是少===大,还有,你得到的网页上字符串,可以看看那些网页是什么编码的.
csdn gb2312;google.utf-8,yahoo.com utf-8
因为我手工测试了,用gb2312解码后是对的