python的字符集真是麻烦,先看没有做pickle的情况,一切正常:
>>> val = u'中文¥200' >>> k = blogQueryService.testPickle(val) [('param1', u'\u4e2d\u6587\xa5200')] >>> k '\xe4\xb8\xad\xe6\x96\x87\xc2\xa5200' >>> print k 中文¥200
blogQueryService.testPickle(val) 返回的是str类型,所以返回的是\xe4编码格式。
但如果对val做picke呢?
>>> from cStringIO import StringIO >>> import cPickle as pickle >>> pickler=pickle.Pickler >>> unpickler=pickle.Unpickler >>> >>> val = u'中文¥200' >>> >>> file = StringIO() >>> _pk = pickler(file) >>> val = file.getvalue() >>> >>> val 'V\\u4e2d\\u6587\xa5200\np1\n.' >>> k = blogQueryService.testPickle(val) [('param1', 'V\\u4e2d\\u6587\xa5200\np1\n.')] >>> k 'V\\u4e2d\\u6587\xef\xbf\xbd200\np1\n.' >>>
传递的参数:
'V\\u4e2d\\u6587\xa5200\np1\n.'
返回的数值:
'V\\u4e2d\\u6587\xef\xbf\xbd200\np1\n.'
\xa5 变成 \xef\xbf\xbd
这说明在序列化时采用unicode编码是问题的,比如:
python貌似对utf-8编码是单独新搞了一个unicode 类型,
换句话说对于str类型只能采用默认的编码格式,如果要采用utf-8编码就会变成unicode类型。
>>> val = '中文¥200' >>> val '\xe4\xb8\xad\xe6\x96\x87\xc2\xa5200' >>> k = val.decode('utf8') >>> k u'\u4e2d\u6587\xa5200' >>> type(k) <type 'unicode'> >>> str(k) #转换成str,编码格式又变回\xe4 '\xe4\xb8\xad\xe6\x96\x87\xc2\xa5200'
repr()
相关推荐
Python的序列化与反序列化是将数据结构或对象转换为可存储或传输的格式,然后再次转换回原数据的过程。这一过程对于保存程序状态、跨进程通信、数据持久化等场景非常有用。Python提供了多种序列化库,如pickle、json...
### 浅析Python序列化与反序列化 在软件开发领域,序列化和反序列化是数据处理过程中不可或缺的一部分。序列化是指将程序中的对象转换为可以存储或传输的格式的过程;而反序列化则是相反的过程,即把存储或传输后的...
详解Python 序列化Serialize 和 反序列化Deserialize 序列化 (serialization) 序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化, 它将流转换为对象。这两个过程结合起来,可以轻松地...
Python-srsly是一个针对Python开发的现代高性能序列化库,其设计目的是为了提供高效的数据序列化和反序列化功能,特别是在处理JSON、MessagePack和BSON等格式时表现优秀。这个库是为了解决标准库如json和pickle在...
### Python序列化pickle模块使用详解 #### 一、概述 `pickle`模块是Python中用于序列化和反序列化对象的标准库之一。序列化是指将一个Python对象转换为字节流,以便于在网络上传输或存储到磁盘上;而反序列化则是将...
### Python中的序列化与反序列化 在编程领域中,序列化是指将程序中的对象状态转化为可以存储或传输的形式的过程,而反序列化则是指将序列化的数据还原为原始对象的过程。这种技术广泛应用于多种场景,例如:网络...
在"Python之序列化共8页.pdf.zip"这个压缩包中,很显然,它包含了关于Python序列化的详细内容,可能涵盖了上述提到的各个模块的使用方法、优缺点以及示例代码。"赚钱项目"这个文件名可能暗示了该文档中还包含了如何...
这篇文章主要介绍了Python序列化与反序列化pickle用法实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 要将Python对象作为一个文件的形式保存到磁盘,就叫...
### Python序列化基础知识详解 #### 一、序言 序列化是编程中常见的技术之一,尤其是在需要将数据从一种形式转换为另一种形式以便于存储或传输时。在Python中,序列化通常指的是将数据结构或对象状态转换为可以...
本文实例讲述了python序列化与数据持久化。分享给大家供大家参考,具体如下: 数据持久化的方式有: 1.普通文件无格式写入:将数据直接写入到文件中 2.普通序列化写入:json,pickle 3.DBM方式:shelve,dbm 相关内容...
Python序列化的概念很简单。内存里面有一个数据结构,你希望将它保存下来,重用,或者发送给其他人。你会怎么做?这取决于你想要怎么保存,怎么重用,发送给谁。很多游戏允许你在退出的时候保存进度,然后你再次启动...
**Python调用序列化数据工具Protocol Buffers(protobuf)详解** Protocol Buffers是Google开发的一种高效的数据序列化协议,它允许开发者将结构化的数据串行化,可用于数据存储、通信协议等方面。Python作为一门...
测试python序列化器 测试 Rapidjson simplejson ujson 亚吉尔 100个字典100个数组(转储) 0.378519 2.0051 0.676747 0.800751 100个字典100个数组(负载) 1.09038 1.42313 1.08673 1.33102 数组256 ...
Python序列化基准该为python序列化框架维护了一组基准。 您可以在上找到最新的基准。 目前,以下项目已成为基准。以及不使用框架的基准自定义函数。运行测试套件Docker容器与存储库捆绑在一起,可用于运行基准测试。...
上面例子中pickle序列化python的一个字符串 运行结果: b'\x80\x03X\x08\x00\x00\x00yuaneuroq\x00.' 解释: 最前面的b’ ’ 表示这是一个 bytes 对象 第一个字符\x80是一个操作码,是识别pickle协议 \x03
pyserializer是一个简单的python序列化/反序列化库。 它是一个ORM不可知论的库,用于将python对象转换为本地Python数据类型,反之亦然。 单击获取文档。 安装 您可以使用安装pyserializer: $ pip install ...
利用加载器以及Python反序列化绕过AV 在网络安全领域中,利用加载器以及Python反序列化绕过AV是一种常见的攻击手法。为了绕过杀软的检测,攻击者可以使用加载器将Shellcode加载到内存中,并使用Python反序列化来...