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

上一篇:sql查询约束


下一篇:python中isort的使用