10-01
16
使用HttpClient获取网页字符编码
作者:Java伴侣 日期:2010-01-16
使用HttpClient获取网页字符编码
使用HttpClipent取得网页内容,但不同的网页编码又不一定一样
这样在取得网页响应流的时候,就要分别处理.
一般来说,常见的网页字符集有UTF-8,iso-8859-1,GBK,GB2312几种
当然,你要是一外文高手,全球那么多语言,全搞一遍,就不止这个数目了.
这里取得网页字符集编码只考虑最常见的情况,使用的HttpClient为4.0版本
基本上是目前最新的.下面来看代码.
使用HttpClipent取得网页内容,但不同的网页编码又不一定一样
这样在取得网页响应流的时候,就要分别处理.
一般来说,常见的网页字符集有UTF-8,iso-8859-1,GBK,GB2312几种
当然,你要是一外文高手,全球那么多语言,全搞一遍,就不止这个数目了.
这里取得网页字符集编码只考虑最常见的情况,使用的HttpClient为4.0版本
基本上是目前最新的.下面来看代码.
复制内容到剪贴板 程序代码
/**
* 正则匹配
* @param s
* @param pattern
* @return
*/
public boolean matcher(String s, String pattern)
{
Pattern p = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE
+ Pattern.UNICODE_CASE);
Matcher matcher = p.matcher(s);
if (matcher.find())
{
return true;
} else
{
return false;
}
}
/**
* 获取Response内容字符集
* @param response
* @return
*/
public String getContentCharset(HttpResponse response)
{
String charset = "ISO_8859-1";
Header header = response.getEntity().getContentType();
if (header != null)
{
String s = header.getValue();
if (matcher(s, "(charset)\\s?=\\s?(utf-?8)"))
{
charset = "utf-8";
} else if (matcher(s, "(charset)\\s?=\\s?(gbk)"))
{
charset = "gbk";
} else if (matcher(s, "(charset)\\s?=\\s?(gb2312)"))
{
charset = "gb2312";
}
}
return charset;
}
* 正则匹配
* @param s
* @param pattern
* @return
*/
public boolean matcher(String s, String pattern)
{
Pattern p = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE
+ Pattern.UNICODE_CASE);
Matcher matcher = p.matcher(s);
if (matcher.find())
{
return true;
} else
{
return false;
}
}
/**
* 获取Response内容字符集
* @param response
* @return
*/
public String getContentCharset(HttpResponse response)
{
String charset = "ISO_8859-1";
Header header = response.getEntity().getContentType();
if (header != null)
{
String s = header.getValue();
if (matcher(s, "(charset)\\s?=\\s?(utf-?8)"))
{
charset = "utf-8";
} else if (matcher(s, "(charset)\\s?=\\s?(gbk)"))
{
charset = "gbk";
} else if (matcher(s, "(charset)\\s?=\\s?(gb2312)"))
{
charset = "gb2312";
}
}
return charset;
}
评论: 0 | 引用: 0 | 查看次数: 787
发表评论