近期须要用到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)

通过设置上述參数,攻克了编码问题。

假设有人有更好的解释和解决方式,求分享!

最新文章

  1. codeforces 510B. Fox And Two Dots 解题报告
  2. 【QT】C++ GUI Qt4 学习笔记2
  3. hbase基本操作
  4. Nemerle Quick Guide
  5. hdu 2426 Interesting Housing Problem 最大权匹配KM算法
  6. Android学习7--日志信息的使用
  7. [React] React Fundamentals: JSX Deep Dive
  8. [K/3Cloud] 如何从被调用的动态表单界面返回数据
  9. 脚本语言:Xmas(一)
  10. 1-LPC1778建立工程
  11. 从Redis到Codis移植实践
  12. AGC 027C.ABland Yard(拓扑/二分图)
  13. java启动jar包中的指定类
  14. Ubuntu install TensorFlow
  15. avalonJS-源码阅读(三) VMODEL
  16. 基于五阶段流水线的RISC-V CPU模拟器实现
  17. maven 发布jar包到远程仓库
  18. BOM*创建工艺路线
  19. hdu 1358:Period(KMP算法,next[]数组的使用)
  20. 关于vue2非表单元素使用contenteditable="true"实现textarea高度自适应

热门文章

  1. IndexReader已解决的问题
  2. js 执行一个字符串类型的函数
  3. ACM字符串处理算法经典:字符串搜索
  4. HDU1312 Red and Black 解读
  5. CSS截取字符串,额外的文本显示以省略号
  6. IOS计划 分析
  7. 数组、链表、Hash(转)
  8. 使用newLISP由SMTPserver发送电子邮件
  9. 很酷的CSS3仿Facebook登录表单
  10. jaxb和dozer简介