java 读取 C存放到Memcached中的网页GZIP压缩字符串、并解压出网页文本

这篇博客介绍了如何使用Java从C程序在Memcached中存储的GZIP压缩网页字符串中读取并解压数据。重点在于修改MemcachedClient的默认编码集为ISO-8859-1,使用特定的get方法,并处理特殊字符的键编码问题。
摘要由CSDN通过智能技术生成

最近公司要做抓取、java的效率不行、然后就选了 C 做抓取、为提高传输效率要抓取网页的GZIP压缩过的数据、

所以就要求实现 用java 读取 C存放到Memcached中的网页GZIP压缩字符串、并解压出网页文本、

折腾了几天翻了官方文档 看了源码终于解决掉读取的问题了

 


1、memcached 默认编码集是UTF-8 所以如果存普通文本、那取出来就没有问题。
     但是现在存的是压缩的文本字符串、所以用默认的UTF-8取出来就会有问题、就要改它的默认编码集
     MemCachedClient mcc = new MemCachedClient("Server"+ind);
     mcc.setDefaultEncoding("ISO-8859-1");//更改默认编码集(好像只能用ISO-8859-1其他的测试都不行)
  
2、然后取数据的时候不要用默认的mcc.get(key)方法 换成 mcc.get(key,null,true);区别就在第三个参数

     表明get时直接返回String,而不进行解码。

 

3、 如果你设置了 默认编码集是ISO-8859-1的话 但是取的是普通文本 需要如下转换
 s = new String(s.getBytes("ISO-8859-1"),"UTF-8");

 

 

4、memcached 默认会对 key 进行 URLEncoder的编码、如果你的key里有特殊字符那key的值就变掉了、如:@会变成%40

     //取值设置不对key做编码   

    mcc.setSanitizeKeys(false);  

 

以上都采用 com.danga.MemCached.MemCachedClient 客户端处理、系统环境win7

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值