谈谈Python编码问题和Unicode

谈谈Python编码问题和Unicode

ID:8406551

大小:347.50 KB

页数:17页

时间:2018-03-20

谈谈Python编码问题和Unicode_第1页
谈谈Python编码问题和Unicode_第2页
谈谈Python编码问题和Unicode_第3页
谈谈Python编码问题和Unicode_第4页
谈谈Python编码问题和Unicode_第5页
资源描述:

《谈谈Python编码问题和Unicode》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、谈谈Python编码问题和Unicodetaochunhua@tencentoutlineUnicode基础知识Python的str和unicodeJson编码工具实例UnicodeAscii时代7位,最高位是校验位MBCS时代(多字节字符集)中文CP963,GBK,GB2312,BIG5UnicodeUnicode16,Unicode32题外话:存在与表示BigEndian&LittleEndianSPARK,x86,ARMHostByteOrder&NetworkByteOrderhtonl

2、,ntohl,htons,ntohsObjectPersistence&SerializeMFC,javaserialiableinterfaceandpersistenceapi,protobufUnicode&UTF,UCSSeveralmechanismshavebeenspecifiedforimplementingUnicode.unicode&utfunicodeunicode16,unicode32UnicodeTransformationFormat(UTF)UTF16(Big/

3、LittleEndian)UTF32(Big/LittleEndian)UTF8变长方案思考?为什么是变长的?如何实现?Pythonstr&unicodestr对象存储ascii字符串,以及二进制数据unicode对象存储unicode字符串,采用的是utf16或utf32str用来存储各种utf数据,包括gbk等可以认为:unicode对象是理想的unicode,str是丑陋的现实(各种utf)str与unicode的转化使用时机拇指定律IO时用stre.g.network,filereadw

4、rite内部处理时用unicodejsonencode,stringprocess例子从外部读入时它是str转为unicode进行必要处理再转为str输出demo体验demo.pyimportjson我懂了上面说的,为什么json还是搞不定?嗯,因为json帮你encode,decode了一些东西需要仔细阅读json模块的文档json.dumps(obj,ensure_ascii,encoding...)objpython数据结构:dic,list...ensure_ascii=True(def

5、ault)dumps返回一个strensure_ascii=Falsedumps返回一个unicode!我们可以进一步对它encodeencoding在obj进行转化之前,所有obj中的str会转为unicode,即str.decode(encoding)默认情况:str->unicode->json(unicode)->str一个默认处理json.dumps(d,encoding='gbk')它返回一个strstr->unicode->json(unicode)->strstr->unicod

6、e的decode在encoding参数控制json(unicode)->str这里的encoding是默认控制的!这个默认控制不是encode,而是直接把unicode转义为ascii编码,这个ascii码的内容是unicode!这里应该是个utf8,这个过程是个硬编码:见lib中encode.py证据老白干酒utf8:0x80010x767D0x5E720x9152gbk:0xC0CF0xB0D70xB8C90xBEC6JSON本身的规范和实现有了以上知识,我们还有可能搞不定特定需求:比如,请

7、给我弄个GKB的字符串!JSON规范定义string必须是unicode字符串,但是实现形式默认是utf8有些json解析函数仅实现了utf8,不支持其他格式!实例后台程序写入数据到redis实例redis中数据实例php接口

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。