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中的编码.那么无论你用什么编 ...
随机推荐
- Kafka manager安装 (支持0.10以后版本consumer)
下载地址: https://pan.baidu.com/s/1jIE3YL4 步骤: 1. 解压kafka-manager-1.3.2.1.zip 2. cd kafka-manager-1.3.2 ...
- Studio更新
其实最主要的是下面三个步骤: 1.更新As工程为3.0 2.必须升级gradle到4.0以上 3.buildToolsVersion升级到26.0.0 4.在gradle.properties中配置版 ...
- MQTT_DEMO
1 /* 2 Copyright (c) 2009-2012 Roger Light <roger@atchoo.org> 3 All rights reserved. 4 5 Redis ...
- 音频中PCM的概念
本文取自由http://blog.csdn.net/droidphone一部分 1. PCM是什么 PCM是英文Pulse-code modulation的缩写,中文译名是脉冲编码调制.我们知道在现实 ...
- activity的启动模式有哪些?
Activity启动模式设置: <activity android:name=".MainActivity" android:launchMode="standar ...
- C#实现HTTP请求文件下载,GET、POST请求的数据流接收
做项目的时候由于插件Phaser请求audio的时候,不允许跨域,具体提示====> 已拦截跨源请求:同源策略禁止读取位于 http://ttyouni.com/1.mp3 的远程资源.(原因: ...
- Underscore.js(JavaScript对象操作方法)
Underscore封装了常用的JavaScript对象操作方法,用于提高开发效率.(Underscore还可以被使用在Node.js运行环境.) 在学习Underscore之前,你应该先保存它的AP ...
- 一些有用的java 框架
jwt 用于生成web toke的类库 http://jwt.io/ jasypt java加密类库 http://www.jasypt.org/
- Android NDK学习(3)使用Javah命令生成JNI头文件 .
转:http://www.cnblogs.com/fww330666557/archive/2012/12/14/2817387.html 第一步: 在Eclipse中创建android项目,并声明N ...
- Unity3D笔记 GUI 一
要实现的功能: 1.个性化Windows界面 2.减少个性化的背景图片尺寸 3.个性化样式ExitButton和TabButton 4.实现三个选项卡窗口 一.个性化Windows界面 1.1.创建一 ...