Redis 中文入库成功,读取数据写入文件乱码问题
2024-10-14 04:05:30
近期须要用到redis ,可是在编码这个问题上,纠结了非常久。
需求 :每天一个进程将中文文件入库到redis中(不定时更新) ,另外几个进程读取redis中的信息 ,并处理数据结果。使用的redis模块 :入库正常,读取数据成功,以GBK编码写入文件出现异常。 通过下面參数连接 redis :
client = redis.StrictRedis(host='localhost', port=6379, db=0, password="***") 从stackoverflow上了解到 :最好传入一个str类型的value给redis,而不是unicode,否则,redis会直接使用set命令,将你的value设置为utf-8的格式,当你使用get方法获取数据的时候,redis本身并不关心你value的数据的类型,而给你返回一个str类型的value。因此,你存储的时候value的类型是关键所在
,主要体如今redis-py的源代码中 :
"""
Encode the value so that it's identical to what we'll
read off the connection
"""
if self.decode_responses and isinstance(value, bytes):
value = value.decode(self.encoding, self.encoding_errors)
elif not self.decode_responses and isinstance(value, unicode):
value = value.encode(self.encoding, self.encoding_errors)
return value
解决方法 :在使用redis API 连接数据库时 :
class redis.StrictRedis(host='localhost', port=6379, db=0, password=None, socket_timeout=None,connection_pool=None, charset='GBK', errors='strict',
decode_responses=True, unix_socket_path=None)
通过设置上述參数,攻克了编码问题。
假设有人有更好的解释和解决方式,求分享!
最新文章
- codeforces 510B. Fox And Two Dots 解题报告
- 【QT】C++ GUI Qt4 学习笔记2
- hbase基本操作
- Nemerle Quick Guide
- hdu 2426 Interesting Housing Problem 最大权匹配KM算法
- Android学习7--日志信息的使用
- [React] React Fundamentals: JSX Deep Dive
- [K/3Cloud] 如何从被调用的动态表单界面返回数据
- 脚本语言:Xmas(一)
- 1-LPC1778建立工程
- 从Redis到Codis移植实践
- AGC 027C.ABland Yard(拓扑/二分图)
- java启动jar包中的指定类
- Ubuntu install TensorFlow
- avalonJS-源码阅读(三) VMODEL
- 基于五阶段流水线的RISC-V CPU模拟器实现
- maven 发布jar包到远程仓库
- BOM*创建工艺路线
- hdu 1358:Period(KMP算法,next[]数组的使用)
- 关于vue2非表单元素使用contenteditable=";true";实现textarea高度自适应