编码问题,一直是使用python2时的一块心病.几乎所有的控制台输入输出.IO操作和HTTP操作都会涉及如下的编码问题: UnicodeDecodeError:‘ascii’codec can’t decodebyte0xc4inposition10:ordinalnotinrange(128) 这究竟是是个什么东西?!有时稀里糊涂地用一坨encode(),decode()之类的函数让程序能跑对了,可是下次遇到非ASCII编码时又悲剧了. 那么Python 2.x中的字符串究竟是个什么呢? 基本…
老猿有个通过UE编辑(其他文本编辑器一样有类似问题)的bmi.py文件,在Python Idle环境打开文件执行时没有问题,但import时报错: SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0xc7 in position 0: invalid continuation byte,具体报错截图如下: 老猿知道这是字符集编码的问题,应该是Python import文件是支持UTF-8编码,而老猿存储时是GBK的编码导致…
一.while循环 1.1语法 while 条件: 代码块(循环体) else: 当上面的条件为假的的时候,才会执行. 执行顺序:先判断条件是否为真,如果是真的,执行循环体,再次判断条件,直到条件不成立,停止循环. 1.2break和continue的区别 break用来停止当前本层循环. continue用来停止本次循环,会继续执行下一次. 二.格式化输出(输出带有一些格式,美观) %s:占位字符串(也可以用来占位数字,万能的) %d:占位数字 注:在字符串中如果使用了%s,%d这样的占位符,…
while循环 循环:不断重复着某件事就是循环 while 关键字 死循环:while True: ​ 循环体 while True: # 死循环# print("坚强")# print("过火")# print("单身情歌")# print("郭德纲的小曲")# print("五环之歌")# print("鸡你太美")# print("大碗宽面")# print(&…
数据类型 number(数字) 用于存储类型,通常分为int.long.float.complex: int:32位机器上占32位,取值范围为-231 ~ 231 - 1:64位机器上占64位,取值范围为-263-263-1: long:无指定位宽,但实际使用中由于机器内存有限,故不可能无限大: float:用来处理实数,占8个字节,64位,52位表示底,11位表示指数,最后一位表示符号: complex:由实数部分和虚数部分组成: string(字符串) 用单引号'或双引号"括起来的任意文本,…
目录 from urllib.parse import urlparse, quote, unquote, urlencode1.解析url的组成成分:urlparse(url)2.url的base64编解码:quote(url).unquote(url)3.字典变成一个字符串=&连接,并且被base64编码:urlencode(字典) from urllib.parse import urlparse, quote, unquote, urlencode print("========…
1.理清一些知识点: python默认的编码格式: ASCII(py2) unicode(py3) 查看默认编码:sys.defaultencoding 修改默认编码:#coding = utf-8 unicode是一种编码标准 其实就是还没编码 具体的实现标准可能是utf-8,utf-16,gbk -- python中str的编码格式: unicode str不能再解码(解码,把别的编码格式变成unicode) 2.encode和decode(都跟unicode有直接关系) 看个例子 str1…
3.0 序 我们知道python中的字符串属于变长对象,当然和int也是一样,底层的结构体实例所维护的数据的长度,在对象没有定义的时候是不知道的.当然如果是python2的话,底层PyIntObject维护的就是一个long,显然在没创建的时候就知道是1. 可变对象维护的数据的长度只能在对象创建的时候才能确定,举个例子,我们只能在创建一个字符串或者列表时,才知道它们所维护的数据的长度,在此之前,我们对此是一无所知的. 注意我们在前面提到过可变对象和不可变对象的区别,在变长对象中,实际上也可以分为…
转自:http://luchanghong.com/python/2012/07/06/python-encoding-with-unicode-and-gbk-and-utf8.html 概要:编码转换无疑是程序开发过程中常遇到而且很让人头疼的问题,一旦和数据库交互那就更麻烦了,今天来总结一下 python 中编码转换的方法. 前一段时间就想写一篇总结Python字符串的文章,但是时间较紧,而且我当时遇到的问题也不是很难,就暂搁下了,今天又被这编码折磨一番,泪奔啊…… 至于unicode.ut…
通过例子来看问题是比较容易懂的. 首先来看,下面这个是我新建的一个txt文件,名字叫做ivan_utf8.txt,然后里面随便编辑了一些东西. 然后来用控制台打开这个文件,同样也是截图: 这里就是简单的打开文本,读取文本内容,打印出来看,我们看到print出来的是和我写进去的是一样的东西.然后呢,我在对这个内容使用decode(‘gbk’),就是解编码,使用gbk方式进行解码,什么意思呢?就是说,我假设这个a是gbk方式的编码,结果是什么呢?大家都看到了,报错了哈!!!!说明这个不是gbk编码,…
早上被python的编码搞得抓耳挠腮,在搜资料的时候感觉这篇博文很不错,所以收藏在此. python2.x中处理中文,是一件头疼的事情.网上写这方面的文章,测次不齐,而且都会有点错误,所以在这里打算自己总结一篇文章. 我也会在以后学习中,不断的修改此篇博客. 这里假设读者已有与编码相关的基础知识,本文不再再次介绍,包括什么是utf-8,什么是unicode,它们之间有什么关系. str与字节码 首先,我们完全不谈unicode. s = "人生苦短" s是个字符串,它本身存储的就是字节…
  1.unicode.gbk.gb2312.utf-8的关系 http://www.pythonclub.org/python-basic/encode-detail 这篇文章写的比较好,utf-8是unicode的一种实现方式,unicode.gbk.gb2312是编码字符集: 2.python中的中文编码问题 2.1 .py文件中的编码 Python 默认脚本文件都是 ANSCII 编码的,当文件 中有非 ANSCII 编码范围内的字符的时候就要使用"编码指示"来修正. 一个mo…
Python中的str与unicode处理方法 2015/03/25 · 基础知识 · 3 评论· Python 分享到:42 原文出处: liuaiqi627 的博客    python2.x中处理中文,是一件头疼的事情.网上写这方面的文章,测次不齐,而且都会有点错误,所以在这里打算自己总结一篇文章. 我也会在以后学习中,不断的修改此篇博客. 这里假设读者已有与编码相关的基础知识,本文不再再次介绍,包括什么是utf-8,什么是unicode,它们之间有什么关系. str与字节码 首先,我们完全…
python中的str对象其实就是"8-bit string" ,字节字符串,本质上类似java中的byte[]. 而python中的unicode对象应该才是等同于java中的String对象,或本质上是java的char[]. str: s = "你好" unicode: u = u"你好“ unicode转化为str,采用encode 编码: str = u.encode('gbk') str转化为unicode ,采用decode 解码: unic…
在python中,unicode是内存编码集,一般我们将数据存储到文件时,需要将数据先编码为其他编码集,比如utf-8.gbk等. 读取数据的时候再通过同样的编码集进行解码即可. #python3 >>> s = '中国' >>> a = s.encode() >>> a b'\xe4\xb8\xad\xe5\x9b\xbd' >>> b = a.decode() >>> b '中国' 但是其实还有一种unicode…
众所周知,一个文字从输入到显示到存储是有一个固定过程的,其过程为:输入码(根据输入法不同而不同)→机内码(根据语言环境不同而不同,不同的系统语言编码也不一样)→字型码(根据不同的字体而不同)→存储码(根据保存的编码类型不同而不同).不同的存储码之间又有什么异同呢? 一.ASCII系列编码 首先来说明ASCII码(American Standard Code for Information Interchange,美国标准信息交换码),这个编码的时代就久远了,是由美国国家标准局(ANSI)制定,目…
转自:http://www.crifan.com/python_already_got_correct_encoding_string_but_seems_print_messy_code/ [背景] Python中的字符编码,其实的确有点复杂. 再加上,不同的开发环境和工具中,显示的逻辑和效果又不太相同,尤其是,中文的,初级用户,最常遇到的: (1)在Python自带的IDE:IDLE中折腾中文字符,结果看到的差不多都是乱码类的东西,比如:’\xd6\xd0\xce\xc4′ (2)将一个中文…
python_2.x_unicode_to_str.py a = u"中文字符"; a.encode("GBK"); #打印: '\xd6\xd0\xce\xc4\xd7\xd6\xb7\xfb' print(a.encode("GBK")); 打印: �����ַ� a.encode("utf-8") 打印: '\xe4\xb8\xad\xe6\x96\x87\xe5\xad\x97\xe7\xac\xa6' 每三个byte…
Python中Unicode字符串 字符串还有一个编码问题. 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),0 - 255被用来表示大小写英文字母.数字和一些符号,这个编码表被称为ASCII编码,比如大写字母 A 的编码是65,小写字母 z 的编码是122. 如果要表示中文,显然一个字节是不够的,至少需要两个字节,而且…
计算机早期是只支持ASCII码的,经过long long的发展,出现了这些支持世界上各种语言字符的编码:unicode, utf-8, gb2312. 对于unicode, utf-8, gb2312,虽然都能表示各种字符,但是各种字符在各种编码方式下的码是不一样的.可以把utf-8, gb2312理解为unicode这种编码思想(支持各种字符)的各种实现. python中的函数unicode(str, "UTF-8"),可以返回"UTF-8"编码的字符串str的u…
基于python2.7中的字符串: unicode-->编码encode('utf-8')-->写入文件 读出文件-->解码decode('utf-8')-->unicode 在使用unicode的时候,必须注意以下的原则: 1. 程序中出现字符串的地方加前缀u,表示为unicode类型 2.不要使用str函数,在使用的时候使用unicode函数 3.不要使用string模块 4.只有在写入文件或者数据库或者网络的时候,才使用encode函数来进行编码发送:只有在把数据读取回来的时…
ascii和unicode是字符集,utf-8是编码集 字符集:为每一个「字符」分配一个唯一的 ID(学名为码位 / 码点 / Code Point) 编码规则:将「码位」转换为字节序列的规则(编码/解码 可以理解为 加密/解密 的过程) ascii每个字符占用一个字节(8位),其中第一位恒为0,因此ascii一共可以表示128个字符 unicode每个字符占用两个字节(16位),可以用来表示汉字 链接:https://www.zhihu.com/question/23374078/answer…
编码方法encoding() 描述 encode() 方法以指定的编码格式编码字符串,默认编码为 'utf-8'.将字符串由string类型变成bytes类型. 对应的解码方法:bytes decode()  方法. 语法 str.encode([encoding='utf-8'][,errors='strict']) str是表示需要编码的字符串,并且是个string类型. encoding -- 可选参数,要使用的编码方案,默认编码为 'utf-8'. errors -- 可选参数,设置不同…
python中unicode对象和str对象拼接在一起,会自动将str对象转换成unicode对象 即:a="aa" b=u"bb" c=a+b type(c)会打印出此对象为unicode对象 另外,json.loads(a)返回的对象,key和value的类型均是unicode类型…
正确处理文本,特别是正确处理Unicode.是个老生常谈的问题,有时甚至会难倒经验丰富的开发者.并不是因为这个问题很难,而是因为对软件中的文本,开发者没有正确理解一些关键概念及其表示方法.在StackOverflow上搜索关于UnicodeDecodeError相关的问题,可以看到很多人都有这样的误解.这些错误的概念可以追溯到Unicode出现之前.那时许多现今的开发者还没入职,也包括我自己.如果这些错误的概念没有散布开来,其实不是个问题.现在很多人都有这些错误概念,部分原因是因为有些非常流行的…
python中unicode, hex, bin之间的转换 背景 在smb中有个feature change notify, 需要改动文件权限dacl,然后确认是否有收到notify.一直得不到这个dacl的formal是什么样子的,于是pdb中打印出原始dacl,是个类似于\x01\x00\x04\的字符串str,然鹅无法用str的方法来操作它. 需求 拿到特定的dacl位(wireshark中已确认为str的第34位11111,bin\x1f)并对它的最后一个bit位进行翻转. 坑 get到…
版本信息: protobuf: v2.6.1 python: 2.7 关于在Python中使用protobuf时 string格式字段的编码问题 在python中编码格式多采用utf-8格式.而protobuf 官网中这样说到: 如果不做处理,在message 中定义了一个string类型的字段后,出现错误如下: ERROR: ValueError: '\xe5\x94\x90\xe6\x9e\x9c' has type bytes, but isn't in 7-bit ASCII encod…
Python中出现 SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 12-13: truncated \UXXXXXXXX escape 1 问题 SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 12-13: truncated \UXXXXXXXX escape 2…
windows中的路径是反斜杠\,然而反斜杠\在python中有着转义字符的意义,所以在py文件中写windows文件路径的时候,要特别注意反斜杠\的使用. 下面有三种解决方式: 方式一:转义的方式 'c:\\users\xxx\desktop\a.txt' 方式二:显式声明字符串不用转义 r'c:\users\xxx\desktop\a.txt' 方式三:使用linux的路径 'c:/users/xxx/desktop/a.txt' 以上三种方式都是正确的,可以解决当下的这个错误. 然而第三种…
这篇文章主要介绍python当中用的非常多的一种内置类型——str.它属于python中的Sequnce Type(序列类型).python中一共7种序列类型,分别为str(字符串),unicode(u字符串),list(列表),tuple(元组),bytearray(字节数组),buffer(缓冲内存),xrange(范围).它们的通用操作如下: Operation Result x in s 判断x是否在s中 x not in s 判断x是不在s中 x + t 两个序列合并, 将t加到s之后…