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");,解决了问题。

  • 相关阅读:
    HDU 1856 More is better
    并查集模板
    HDU 1325 Is It A Tree?
    HDU 1272 小希的迷宫
    CodeVS 2639 约会计划
    POJ 1163 数字三角形
    HDU 1232 畅通工程
    HDU 1213 How Many Tables
    树形结构打印二叉树
    网址收藏
  • 原文地址:https://www.cnblogs.com/pier2/p/jedis-utf8.html
Copyright © 2011-2022 走看看