vps交流

(已解决)请教一个redis的问题


本帖最后由 mikasa 于 2021-12-11 15:49 编辑

解决方法:是Windows terminal的问题,默认是按GBK编码显示,而python默认安按照UTF8编码写入。使用python创建redis连接对象是指定GBK或在Windows Terminal里输入chcp 65001可解

(已解决)请教一个redis的问题

我用python将中文字符串存入了redis。

在终端连接到redis读取就成了这样,全部都是十六进制数字。

  1. redis-cli
  2. hget 937111 title

复制代码

(已解决)请教一个redis的问题

  1. "xe5x85x83xe5xaex87xe5xaex99xefxbcx9fxe4xb8x8dxe6x8ax8axe6x88x91xe5x8axa8xe6xa3xaexe7x9cx8bxe5x9cxa8xe7x9cxbcxe9x87x8cxefxbcx9f"

复制代码

然后我就在网上查一下,说是要在前面加上raw参数,我加入了,然后就彻底乱码了

  1. redis-cli –raw
  2. hget 937111 title

复制代码

(已解决)请教一个redis的问题

但是我用python打开连接去读这段的话就能正常显示

  1. python3
  2. import redis
  3. r = redis.Redis(host=’localhost’,port=6379,decode_reponses=True)
  4. r.hget(937111,’title’)

复制代码

(已解决)请教一个redis的问题

请问这是为什么?如果我想在终端里正常显示出中文该怎么解决啊?

我看看                 
up
所以说,redis不能直接raw
redis是二进制安全的, 你这乱码就是存进去的编码格式和取出来的编码格式不一样导致的
本帖最后由 skysf 于 2021-12-11 15:21 编辑

redis-cli –raw
试了一下可以的啊

Able 发表于 2021-12-11 15:14
redis是二进制安全的, 你这乱码就是存进去的编码格式和取出来的编码格式不一样导致的 …

找到原因了,感谢

skysf 发表于 2021-12-11 15:20
redis-cli –raw
试了一下可以的啊

已解决,感谢