zoukankan      html  css  js  c++  java
  • 解决Jedis数据读取乱码问题

    现象

    同一套代码,同一个数据源,不同的操作系统,在OSX上数据提取编码正常,而Ubuntu上拉取数据乱码,数据拉取代码如下。

    @Override
    public List<String> mget(String... fields) {
        List<byte[]> arrFields = new ArrayList<>();
        for (String field : fields) {
            arrFields.add(field.getBytes());
        }
    
        List<byte[]> results = redisTemplate.execute(
                (RedisCallback<List<byte[]>>) connection -> connection.mGet(arrFields.toArray(new byte[arrFields.size()][]))
        );
        if (results == null) {
            return new ArrayList<>();
        }
        final List<String> ret = new ArrayList<>();
        results.forEach(result -> {
            if (result != null) {
                try {
                    ret.add(new String(result));
                } catch (UnsupportedEncodingException e) {
                    ret.add(null);
                }
            } else {
                ret.add(null);
            }
        });
        return ret;
    }
    

    检查了Redis存储的数据都是UTF-8之后,怀疑是不同OS的编码有所不同,所以对提取的数据指定了编码格式,即new String(data, "UTF8");,解决了问题。

  • 相关阅读:
    【CF932E】Team Work
    【ZJOI2011】看电影
    【CQOI2011】放棋子
    【HAOI2010】计数
    【HNOI2009】有趣的数列
    【ZJOI2010】排列计数
    【FJOI2016】建筑师
    【USACO10 OPEN】三角形计数
    【HNOI2012】排队
    【HNOI2008】越狱
  • 原文地址:https://www.cnblogs.com/pier2/p/jedis-utf8.html
Copyright © 2011-2022 走看看