【发布时间】:2011-10-24 00:07:22
【问题描述】:
我测试了用于编码 ISO-8859-5 的 redis 和 jedis API:
String S = new String("Привет мир".getBytes(), "ISO-8859-5");
redis.lpush("test", S);
System.out.println(redis.lpop("test"));
结果,我有:а�б�аИаВаЕб� аМаИб�
然后我尝试使用 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));
结果:аАТаБТаАааАааАаБТ аАааАаБТ
我做错了什么?是我还是redis,还是jedis?
【问题讨论】:
-
在 Linux Debian, Redis v. 2.2.12 上测试它
-
是否成功?
-
String S = new String("Привет мир".getBytes(), "ISO-8859-5");此代码完全不正确。首先将字节转换为默认编码(取决于平台),然后将这些字节转换为 ISO-8859-5。结果是您试图将一些垃圾推送到 Redis。