关于Python3.4.1客户端中的char b前缀连接到redis

Zhi*_* Su 42 python redis

我遇到了麻烦.我的代码如下.但我不知道为什么在输出字符串"Hello Python"之前有一个char'b'.

>>> import redis
>>> redisClient = redis.StrictRedis(host='192.168.3.88',port=6379)
>>> redisClient.set('test_redis', 'Hello Python')
True
>>> value = redisClient.get('test_redis')
>>> print(value)
b'Hello Python' //why char 'b' output?
Run Code Online (Sandbox Code Playgroud)

小智 77

这意味着它是一个字节字符串

您可以使用:

redis.StrictRedis(host="localhost", port=6379, charset="utf-8", decode_responses=True)
Run Code Online (Sandbox Code Playgroud)

decode_responses=True做一个unicode字符串.

  • 请注意,这会阻止您在数据库中存储真正的二进制数据,因为它将被错误地视为UTF8编码的字符串 (7认同)
  • 奇怪的是`[decode_responses`]在[文档]中未被描述(http://redis-py.readthedocs.org/en/latest/#redis.StrictRedis) (2认同)

Eri*_*ric 46

b'Hello Python' 是一个字节字符串 - redis将在途中为您自动编码一个unicode字符串,但是在出路时解码它是你的工作.

最好明确编码和解码:

>>> redisClient.set('test_redis', 'Hello Python'.encode('utf-8'))
>>> redisClient.get('test_redis').decode('utf-8')
'Hello Python'
Run Code Online (Sandbox Code Playgroud)