我测试redis和jedis API编码ISO-8859-5:
String S = new String("Привет мир".getBytes(), "ISO-8859-5");
redis.lpush("test", S);
System.out.println(redis.lpop("test"));
结果,我有:' ' p ' ' аИаВаЕб ' аМаИб ' '
然后我尝试使用SafeEncoder:
String S = new String("Привет мир".getBytes(), "ISO-8859-5");
redis.lpush("test", S);
byte[] Result = SafeEncoder.encode(redis.lpop("test"));
System.out.println(new String(Result));
结果:аАТаБТаАааАааАааБТ аАааАааБТ
我做错了什么?是我,瑞迪斯,还是绝地武士?
可以直接使用二进制格式
byte[] b = "Привет мир".getBytes();
redis.lpush(SafeEncoder.encode("test"), b);
System.out.println(redis.lpop("test"));
尝试将信息转换为UTF-8。
顺便说一下,如果你有西里尔编码的问题,这个网站可以帮助你(2cyr.com)