【问题标题】:How to get Unicode string from redis cache using StackExchange.Redis in c#?如何在 c# 中使用 StackExchange.Redis 从 redis 缓存中获取 Unicode 字符串?
【发布时间】:2017-07-19 21:20:04
【问题描述】:

我正在使用 StackExchange.Redis 库来处理 redis。我已将 Unicode 字符串值设置如下。

db.StringSet(key,"धन्यवाद");

我正在尝试使用 Unicode 字符串

db.StringGet(key);

但是得到?????而不是 Unicode 字符串。 Redis 以以下格式存储 Unicode 字符串值。

\xe0\xa4\xa7\xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa4\xaf\xe0\xa4\xb5\xe0\xa4\xbe\xe0\xa4\xa6

【问题讨论】:

  • @Nico 在 redis cli 上获取(错误)ERR 未知命令“--raw”。你试过这个吗?!!!
  • 我测试了你的代码,它工作正常,我可以获得正确的字符串和 cmd,比如 'redis-cli --raw mget key' 在我的电脑上也能正常工作。我认为这是一个环境问题,你的redis版本是什么?如果它仍然不起作用,只需检查第二个答案,解码该字符串。

标签: c# encoding redis stackexchange.redis


【解决方案1】:

RedisValue 具有字符串类型的隐式强制转换运算符。它在发送之前将其编码为UTF-8 字节数组。如果你在Unicode 中有你的字符串,你应该自己获取字节。

byte[] data = Encoding.Unicode.GetBytes(value);
db.StringSet(key, data);
...
data = db.StringGet(key);
value = Encoding.Unicode.GetString(data);

【讨论】:

    猜你喜欢
    • 2020-04-20
    • 1970-01-01
    • 1970-01-01
    • 2010-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    • 1970-01-01
    相关资源
    最近更新 更多