文档章节

python解码编码要点

laugh2last
 laugh2last
发布于 2015/08/16 19:47
字数 544
阅读 71
收藏 7
  1. 理解要点:

    1. 编码规范标准如unicode,编码具体实现:如utf8(记住要点,便于理解)

      1. utf8能够统一兼容处理unicode字符,最好使用utf8编码(文件、ide等)

    2. pytho2对字符串缺省使用ascii处理,ascii映射的是126【包括126】以内的整数

      1. 每个字串存储时对应一个字串,python缺省的字符串混合操作如连接(+、join)涉及的字符串对应的字节串中就不能有超过126的字节,否则UnicodeDecodeError

      2. os.sys.getdefaultencoding()结果为'ascii'

    3. 字符串s用decode(字符串s,编码类型C2)”解码“s对应的字节串为uncode对象时,其中指定的C2要可兼容处理字符串s本身的编码类型C1;反之,将unicode对象encode(unicode对象u,编码类型C3)编码为字节串时,C3要可兼容u的编码类型

    4. 先解后编:输入的字符串最好一开始就解码成unicode对象u,最后输出(如文件、数据库等)的时候再将u编码为字节串,其中编码类型显式的指定

      1. 正确输出print到stdout的字符串本身采用的编码类型与系统本地编码实际类型要一致才能正确显示

      2. windows本地缺省文件编码为mbcs处理,os.sys.getfilesystemencoding()结果为'mbcs'

      3. 利用特定函数显式的自己指定编码类型等才能真正可控,如读写文件使用codecs、en_path+u'文件名'

  2. 注意:

    1. 程序文件内或ide声明的字符编码有时与实际编码有区别

    2. 针对字符串的len()和切片操作最好针对其解码后的unicode对象,否则结果很意外

    3. 本地编码字符集可能不包括特定字符而导致输出乱码

    4. 不要简单直接输出解码后的unicode对象,最好先编码成unicode对象再输出

  3. eg:控制台编码为gbk

>>>print '严'.decode('utf8').encode('gbk')
严
>>>print u'严'.encode('gbk')
严
>>>print os.sys.getdefaultencoding()
ascii
>>>print os.sys.getfilesystemencoding()
mbcs

© 著作权归作者所有

laugh2last
粉丝 0
博文 18
码字总数 5620
作品 0
深圳
部门经理
私信 提问
Python_018 JSON

环境配置 在使用 Python 编码或解码 JSON 数据前,我们需要先安装 JSON 模块。我们会下载 Demjson 并安装: $tar xvfz demjson-1.6.tar.gz$cd demjson-1.6$python setup.py install JSON 函数...

g00m
2015/02/21
116
0
Python基础——内置hashlib、IO、Json、codecs模块(0426)

一、hashlib 加密模块:提供了很多加密的算法 常见的加密方式:MD5 RSA,加密之后不可逆。没法破解。 1、以MD5的方式加密字符串(Python 3) 示例 结果 2、以MD5的方式加密字符串(Python 2)...

python初雪之路
2018/04/27
97
0
Python2.x 字符编码终极指南

在人机交互之字符编码 一文中对字符编码进行了详细的讨论,并通过一些简单的小程序验证了我们对于字符编码的认识。但仅了解这篇文章的内容,并不能帮我们在日常编程中躲过一些字符编码相关的...

selfboot
2016/12/29
0
0
廖雪峰Python教程学习笔记

Python基础 字符串和编码 字符编码 计算机在读取和编辑、保存、传输时文本时使用UTF-8编码,在内存中表示时使用Unicode编码 UTF-8编码使用一个字节表示英文字符,使用2-6字节表示其他语言字...

OSC_fly
2018/08/10
0
0
Requests 库编码问题及引出的 Python 编码问题

Requests 编码 在使用 requests 访问微信接口的时候,requests 只根据 http headers 的信息来设置编码集,文档如下: 这边就是说,我们的选择还有,当服务器不指定编码集时,使用以下方式指定...

xh4n3
2015/08/12
151
0

没有更多内容

加载失败,请刷新页面

加载更多

记一次项目启动报java.lang.StackOverflowError

项目是spring boot,之前没有问题,突然有一次debug方式启动的时候报这个错误。 因为其他同事没有问题,线上也没有问题,所以先排除了是代码问题。 开始以为电脑开的软件太多,然后给jvm的内存...

chro008
2分钟前
3
0
idea 2019.2免费激活码

亲测有效到2020.6 812LFWMRSH-eyJsaWNlbnNlSWQiOiI4MTJMRldNUlNIIiwibGljZW5zZWVOYW1lIjoi5q2j54mIIOaOiOadgyIsImFzc2lnbmVlTmFtZSI6IiIsImFzc2lnbmVlRW1haWwiOiIiLCJsaWNlbnNlUmVzdHJpY3Rpb......

Iverson58
9分钟前
3
0
移动APP开发中的重要注意事项

您的移动app在变化吗?如果没有,请确保遵循这些提示进行移动app开发。大多数行业的IT领导者都优先考虑劳动力和消费者的移动性。实现成功的移动app开发具有挑战性,涉及在app功能开发的基础上...

a429011717
16分钟前
4
0
Qt编写自定义控件69-代码行数统计

一、前言 代码行数统计主要用来统计项目中的所有文件的代码行数,其中包括空行、注释行、代码行,可以指定过滤拓展名,比如只想统计.cpp的文件,也可以指定文件或者指定目录进行统计。写完这...

飞扬青云
35分钟前
9
0
驰骋工作流引擎-ccflow关于 “ 是否自动计算未来的处理人”的功能变更

关键字:流程未来节点处理人 工作流快速开发平台 工作流流设计 业务流程管理 asp.net 开源工作流 业务背景:一个流程在启动起来后,是可以对一些节点计算出来处理人是谁,流程的走向。对于另...

孟娟
51分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部