Redis 中文入库成功,读取数据写入文件乱码问题
2014-06-10 15:36
387 查看
最近需要用到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的源码中 :
解决方法 :在使用redis API 连接数据库时 :
通过设置上述参数,解决了编码问题。
如果有人有更好的解释和解决方案,求分享!
需求 :每天一个进程将中文文件入库到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)
通过设置上述参数,解决了编码问题。
如果有人有更好的解释和解决方案,求分享!
相关文章推荐
- Redis 中文入库成功,读取数据写入文件乱码问题
- 遇到问题-用StreamReader读取数据时出现乱码,streamwriter写入中文时出现乱码
- VS读取文件或写入文件时出现中文乱码问题
- 遇到问题-用StreamReader读取数据时出现乱码,streamwriter写入中文时出现乱码
- 解决PHP写入、读取MYSQL数据库数据中文乱码问题
- Java底层代码实现单文件读取和写入(解决中文乱码问题)
- servlet读取表单数据和返回页面时的中文乱码问题
- Java中按照行读取和写入文件 日志常用操作 解决中文乱码问题
- flex调用js写文件时,传递的参数包含中文,读取乱码问题
- PHP 从数据库Mysql中读取数据生成excel(解决乱码问题,解决中文变问号问题)
- 读取TXT文件中文乱码问题
- 写入文件以及解决文件名中文乱码问题
- 解决方法:ASP读取数据库中的中文数据出现乱码的问题
- Flex读取非UTF-8中文数据乱码问题的解决方案 flex中文乱码
- Java IO 读取/写入文件 中文乱码困难解决代码
- 解决Java Web开发中Jsp存储读取MySQL数据中文乱码的问题
- 读取文件,解决中文乱码问题
- 【JAVA】读取txt文件中文乱码问题
- Java解析DBF文件,错误Failed to parse Number: For input string: "-.---" 或读取不出数据或乱码问题都在这里解决
- 使用Unicode字符集时用CFile把中文写入txt文件再用记事本打开出现乱码的问题