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中的编码.那么无论你用什么编 ...
随机推荐
- 全屏加载loading显示的解决方法
step1:可以在网页里加一个div用来现实loading. <div id="loading"> <!--这里放你的loading时显示的动画或者文字--> ...
- 资源打包Assetbundle .
在手游的运营过程中,更新资源是比不可少的.资源管理第一步是资源打包.传统的打包可以将所有物件制成预设Prefab,打包成场景.今天我们来一起学习官方推荐的Assetbundle,它是Unity(Pro ...
- codeforces水题100道 第九题 Codeforces Beta Round #63 (Div. 2) Young Physicist (math)
题目链接:http://www.codeforces.com/problemset/problem/69/A题意:给你n个三维空间矢量,求这n个矢量的矢量和是否为零.C++代码: #include & ...
- 【LeetCode OJ】Longest Palindromic Substring
题目链接:https://leetcode.com/problems/longest-palindromic-substring/ 题目:Given a string S, find the long ...
- 中间件系列三 RabbitMQ之交换机的四种类型和属性
概述本文介绍RabbitMQ中交换机类型和属性,主要内容如下: 交换机的作用交换机的类型:Direct exchange(直连交换机).Fanout exchange(扇型交换机).Topic exc ...
- Effective Java (6) - 消除过期的对象引用
一.引言 很多人可能在想这么一个问题:Java有垃圾回收机制,那么还存在内存泄露吗?答案是肯定的,所谓的垃圾回收GC会自动管理内存的回收,而不需要程序员每次都手动释放内存,但是如果存在大量的临时对象在 ...
- 【Mybatis】Mybatis元素生命周期
一.SqlSessionFactoryBuilder SqlSessionFactoryBuilder是利用XML或者Java编码获得资源来构建SqlSessionFactory的,通过它可以构建多个 ...
- 微信小程序插件内页面跳转和参数传递(转)
在此以插件开发中文章列表跳传文章详情为例. 1.首先在插件中的文章列表页面wxml中绑定跳转事件. bindtap='url' data-id="{{item.article_id}}&qu ...
- office excel Query 功能
Microsoft Query 合并查询 Excel 2016 默认已集成 Power Query 功能
- Elasticsearch学习之相关度评分TF&IDF
relevance score算法,简单来说,就是计算出,一个索引中的文本,与搜索文本,他们之间的关联匹配程度 Elasticsearch使用的是 term frequency/inverse doc ...