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

    技术2025-06-17  14

    最近公司要做抓取、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)