网页爬虫抓取utf-8的html时转换为GBK字符串

if(Charset.forName("UTF-8").newEncoder().canEncode(sb.toString())){
			//UTF-8转GBK文本
			Charset inCharset = Charset.forName("UTF-8");
			Charset outCharset = Charset.forName("GBK");
			ByteBuffer buffer=ByteBuffer.wrap(sb.toString().getBytes());
			CharBuffer cb = inCharset.decode(buffer);
			ByteBuffer outbb = outCharset.encode(cb);
			CharSequence str = new String(outbb.array());
			s = str.toString(); 
		}
		else
			s = sb.toString();

第一句判断当前的文本sb.tostring()是否为utf-8编码 

如果是utf-8编码 则进行编码转换。


进行二次修改 由于 网页上编码为GB2312的页面 实际采用编码为GBK 但是其会被Charset类的canEncode解析 所以 判断方式改为

if(!Charset.forName("GBK").newEncoder().canEncode(sb.toString())){//页面无法被GBK所解析
当页面无法被GBK 解析时采用utf-8模式 其余情况直接用GBK解析
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值