python 编码
字符编码
中文:
>>> name = '你好' >>> name '\xe4\xbd\xa0\xe5\xa5\xbd'
英文:
>>> name = "hiekay" >>> name 'hiekay'
计算机中的字符编码
一般用utf-8
UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,也是一种前缀码。它可以用来表示Unicode标准中的任何字符,且其编码中的第一个字节仍与ASCII兼容,这使得原来处理ASCII字符的软件无须或只须做少部份修改,即可继续使用。因此,它逐渐成为电子邮件、网页及其他存储或发送文字的应用中,优先采用的编码。
encode和decode
从encode()和decode()两个内置函数:
codecs.encode(obj[, encoding[, errors]]):Encodes obj using the codec registered for encoding. codecs.decode(obj[, encoding[, errors]]):Decodes obj using the codec registered for encoding.
python2默认的编码是ascii,通过encode可以将对象的编码转换为指定编码格式,而decode是这个过程的逆过程。
实验:
>>> a = "中" >>> type(a) <type 'str'> >>> a '\xe4\xb8\xad' >>> len(a) 3 >>> b = a.decode('utf-8') >>> b u'\u4e2d' >>> type(b) <type 'unicode'> >>> len(b) 1
上面实验中,变量a引用了一个字符串,所谓字符串(str),严格地将是字节串,它是经过编码后的字节组成的序列。也就是你在上面的实验中,看到的是“中”这个字在计算机中编码之后的字节表示。用len(a)来度量它的长度,它是由三个字节组成的。
然后通过decode函数,将字节串转变为字符串,并且这个字符串是按照unicode编码的。在unicode编码中,一个汉字对应一个字符,这时候度量它的长度就是1.
反过来,一个unicode编码的字符串,也可以转换为字节串。
>>> c = b.encode('utf-8') >>> c '\xe4\xb8\xad' >>> type(c) <type 'str'> >>> c == a True
python中如何避免中文是乱码
首先,提倡使用utf-8编码方案,因为它跨平台不错。
- 1 :在开头声明:
# -*- coding: utf-8 -*-
或者
# coding:utf-8
- 2:遇到字符(节)串,立刻转化为unicode,不要用str(),直接使用unicode()
unicode_str = unicode('中文', encoding='utf-8') print unicode_str.encode('utf-8')
- 3:如果对文件操作,打开文件的时候,最好用codecs.open,替代open(这个后面会讲到,先放在这里)
import codecs codecs.open('filename', encoding='utf8')
用python3就没有编码的问题。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
基于gulp的前端自动化方案
前言 最近几年前端技术发展日新月异,特别是单页应用的普及。组件化、工程化、自动化成了前端发展的趋势。webpack已经成为了前端打包构建的主流,但是一些老古董的项目还是存在的,也有优化的必要,正好公司的老项目需要优化,不多说拿gulp实践一下。 本文需要安装node(自行安装),并了解过gulp入门。gulp脚本下载:https://github.com/youhunwl/gulp 欢迎star。 实践 创建项目目录 首先初始化npm依赖项与基本信息,使用命令npm init一直回车,生成package.json文件,也可以直接去上边github仓库目录下载。 你的项目目录关系到你的gulp脚本里的任务路径,我脚本里写的是匹配所有的目录和文件。我简单举个例子:这里js/common里的js文件也会被处理。如果只想处理特定目录的文件,请修改任务里的路径。 demo/ ├── css/ │ ├── index.css ├── js/ │ ├── common/ │ │ └─ common.js │ ├── index.js ├── img/ │ ├── logo.png └── ind...
- 下一篇
1024程序员节 | 阿里巴巴集团开源软件巡礼(史上最全)
小蚂蚁说: 开源先锋Tim O'Reilly 先生曾言:“开源软件是计算机工业最宝贵的财富”。阿里巴巴是开源社区积极的共建者,为开源软件发展做了重要的贡献,相关的 GitHub 2017年数据统计显示,阿里巴巴是唯一一家入围 GitHub 顶尖贡献名单的中国公司,值此1024程序员节,我们梳理阿里巴巴集团的重要开源项目,希望能给对大家有所帮助。 回顾更多蚂蚁金服相关的开源信息: 《开源 |蚂蚁金服启动分布式中间件开源计划,用于快速构建金融级云原生架构》 《蚂蚁金服开源:数据驱动的高交互可视化图形语法G2》 《开源 | 蚂蚁金服分布式中间件开源第二弹:丰富微服务架构体系》 《开源 | 蚂蚁金服开源:关系数据的可视化引擎 G6 2.0》…… 目录 一、前言 二、前端 三、Java 四、数据库 五、系统 六、教程 一、前言 程序员的语言是代码,程序员的交流工具就是开
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Red5直播服务器,属于Java语言的直播服务器