【问题标题】:jedis or redis trouble with encoding ISO-8859-5jedis 或 redis 编码 ISO-8859-5 的问题
【发布时间】: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。

标签: java encoding redis jedis


【解决方案1】:

尝试将信息转换为 UTF-8。
顺便说一句,如果你有西里尔编码的问题,这个网站可以帮助你(2cyr.com

【讨论】:

  • 请提供一个更好的例子(最好使用代码)来说明你的意思
【解决方案2】:

可以直接使用二进制形式

byte[] b = "Привет мир".getBytes();
redis.lpush(SafeEncoder.encode("test"), b);
System.out.println(redis.lpop("test"));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-18
    • 2016-10-04
    • 2011-02-23
    • 2012-09-04
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多