解决终端读取Redis数据出现乱码的前缀(终端读redis乱码前缀)

随着 Redis 作为缓存系统,数据库以及消息队列越来越受欢迎,许多开发者开始使用它。在开发过程中,很容易发现终端查看数据时会出现乱码,这是因为Redis中的字符串和中文字符之间的编码不同造成的。

我们可以让Redis在保存数据时使用utf-8编码:

SU@> redis-cli

127.0.0.1:6379> set key1 “你好”

OK

127.0.0.1:6379> get key1

“\\u4f60\\u597d”

可以看到,数据被编码成 \uXXXX 的形式,这就是utf-8的编码形式,并不是中文字符本身。这时,如果我们想正确的在终端上查看数据,我们需要添加一个前缀来实现对字符的转码。

我们可以使用Python的unicodedata将该字符串形式的Unicode转换为中文:

# -*- coding: UTF-8 -*-
import unicodedata

get_key = "你好"
str_key = u"\\u4f60\\u597d"
# 把字符串形式的Unicode转换为中文
encode_key = unicodedata.normalize('NFKD', str_key).encode('ascii','ignore')
print encode_key
# 输出 你好

同样,我们也可以使用Python的codecs模块将\uXXXX形式的编码转换为中文:

# -*- coding: UTF-8 -*-
import codecs

get_key = "你好"
str_key = u"\\u4f60\\u597d"
# 把字符串形式的Unicode转换为中文
encode_key = codecs.decode(str_key, 'unicode_escape')
print encode_key
# 输出你好

上面的代码已经可以正确的将Redis中乱码的字符串转换为可以显示的中文,从而解决终端读取Redis数据出现乱码的问题。这一技术虽然不难,但对于有一定编程基础的开发者而言,能正确识别Redis中字符串的编码和解码,也是一种值得鼓励的技术。


数据运维技术 » 解决终端读取Redis数据出现乱码的前缀(终端读redis乱码前缀)