python2.X编码
1、Python文件的编码
在Python文件中,可以在第一或第二行指定文件的编码格式(以注释的形式加),这也是Python语法规定的,见http://www.python.org/peps/pep-0263.html。比如用utf8格式存储文件,就要加# -*- coding:gbk -*- 或 # coding = gbk,其中,# -*- coding:gbk -*-这种格式是很多流行的文本编辑器都支持的,此处我使用的是Eclipse+Pydev。指定文件编码格式有两个作用:一是告诉文本编辑器要用指定的编码存储文件;二是告诉Python语法分析器以哪种编码格式来读取分析文件。一个是写入,一个是读取,编码和解码要一致才行。如果没有写上面的‘指定编码行’,那编码和解码就用默认值,文本编辑器的默认文件的编码可以自己修改,Python语法分析器默认用ASCII码解析文件,ASCII码范围是0~127,这样,当文件的某个字节的值大于127时,就会出错,如下。
test.py文件:
a = '你'
print a
当调试时,语法分析器检查出错误,SyntaxError: Non-ASCII character '\xc4' in file E:\test.py on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details。
我的eclips的默认编码是GBK,'你'的GBK编码是c4e3,查看test.py的二进制代码,的确如此。c4>127,ASCII码表中没有对应的字符,就报错了。
因此,对于有非ASCII字符的代码文件,第一行或第二行一定要指定编码格式,建议使用utf-8编码,这种编码格式非常通用。即# -*- coding:utf-8 -*-
1、Python文件的编码
Python2.7中字符串有两个类型:string类型、unicode类型。比如
test2.py文件:
# -*- coding:utf-8 -*-
a = '你'
b = u'你'
a是string类型,b是unicode类型,与文件的编码格式有什么关系呢?OK,test2.py是以utf-8编码后保存的,同一个文件中所有字符的编码格式都是一样的,不可能说a以utf8保存,而b以unicode保存(ucs2或ucs4)。当运行代码时,Python语法分析器会先检查语法,没有问题后,再交由Python解释器执行,对于a,解释器保存的就是其值'你'的utf8编码e4bda0,对于b,解释器通过u识别出它是unicode字符串,那就将其值由utf8转换成unicode放在内存。在python解释器中可以验证,
python2.X编码的更多相关文章
- 【Python】python2 str 编码检测
python2 str 编码检测 import chardet s = 'sdffdfd' print type(s) print chardet.detect(s) s2 = '反反复复' prin ...
- 转:Python2字符编码问题汇总
这篇文章的部分问题在Python3以后不再存在,老猿只是觉得文章的部分内容还是有参考价值,因此在此原文转发连接: Python2字符编码问题汇总
- 关于Python2字符编码的体会
对于Python的字符编码问题也懵了很久,最近做爬虫多次遇到网页转码的问题,干脆彻底解决掉!Just Do it! 1.两种类型str与unicode str和unicode都是basestring的 ...
- 不想再被鄙视?那就看进来! 一文搞懂Python2字符编码
程序员都自视清高,觉得自己是创造者,经常鄙视不太懂技术的产品或者QA.可悲的是,程序员之间也相互鄙视,程序员的鄙视链流传甚广,作为一个Python程序员,自然最关心的是下面这幅图啦 我们项目组一值使用 ...
- python2.x编码问题实例
1,编码问题,主要是区分面向人类的字符串,面向计算机的字节序列 在python3中,字符串是str(默认即unicode),字节序列是bytes 在python2中,字符串是unicode,字节序列是 ...
- Python2字符编码问题汇总
目录 从字符编码说起 unicode与utf-8 当编解码遇上Python2.x unicode 与 str 区别 __str__ __repr__的区别 unicode str utf-8关系 un ...
- Python2中编码错误---éç»äººè¡¨ç®çé¿å ååè¶(æå格式转化为UTF-8
在python2的使用中,总会遇到各种各样的编码问题,这也是使用Python2最头疼的一件事情,幸好python3解决了编码的问题. 下面我在爬虫时遇到的类似éç»äººè¡¨ç®çé¿ ...
- 从python2,python3编码问题引伸出的通用编码原理解释
今天使用python2编码时遇到这样一条异常UnicodeDecodeError: ‘ascii’ code can’t decode byte 0xef 发现是编码问题,但是平常在python3中几 ...
- python3与python2的编码问题
在讲这个问题之前,我们先说说unicode的工作原理.unicode包含了跟全球所有国家编码的映射关系,就是不管你用哪个国家的编码,unicode都能找到它在unicode中的编码.那么无论你用什么编 ...
随机推荐
- EhCache初体验
一.简介 EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点.Ehcache是一种广泛使用的开源Java分布式缓存.主要面向通用缓存,Java EE和轻量级容器.它具有内存和磁盘存 ...
- Splash scroll_position 属性
scroll_position属性用于控制页面上下或左右滚动,如下,表示控制页面向下滚动 400 像素值并返回结果图, function main(splash, args) assert(splas ...
- 【cs229-Lecture3】Logistic回归
参考: http://www.itongji.cn/article/12112cH013.html http://blog.csdn.net/zouxy09/article/details/20319 ...
- 三、K3 WISE 开发插件《K3 WISE开发手册》
1.VB插件工程的命名.命名空间和生成的DLL命名要一致,否则导致注册不成功! 2.主控台的查询分析工具,添加sql直接报表,代码用到临时表,提示“在对应所需名称或序数的集合中未找到项目” 解决:在代 ...
- 题目1452:搬寝室(dp题目)
题目链接:http://ac.jobdu.com/problem.php?pid=1452 详解链接:https://github.com/zpfbuaa/JobduInCPlusPlus 参考代码: ...
- 简单了解如何使用vue-router和vue-resource
我们先来看看vue-router 1.npm install vue-router --save 2.调用vue-router: 第一种方法: 直接在main.js中调用 import vueRout ...
- 生产环境的gitlab大版本升级思路(从7.x升级到8.x)
之前在生产环境部署的gitlab是7.x版本的,提供给公司内部的员工来使用,大概有350个用户左右,gitlab从8.x版本之后内置了CI和CD的集成,所以就考虑到升级版本的问题 通过参考和总结git ...
- 23种设计模式之单例模式(Singleton)
单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法. public class SingleTon { private static Si ...
- Altium Designer 输出 gerber 光绘文件的详细说明
Altium Designer 输出 gerber 光绘文件的详细说明 PCB画好后,我们需要输出光绘文件交给制版厂家.由此,输出光绘文件的重要性就显出来了. 先复习一下介绍各层的定义吧,哈哈 (1) ...
- 【CF819D】Mister B and Astronomers EXGCD
[CF819D]Mister B and Astronomers 题意:小鼠Jack想当太空人(哦不,太空鼠)!为此,它在夜晚带领一堆小朋友一起来到户外看星星.一共有 $n$ 只小鼠,这些小鼠围成一 ...