python 3 字符编码解码问题
python2与python3 字符编码都做了很大的调整,区别:
1.python2字符串默认有两种类型,unicode和str。'你好' !=u'你好'
python3字符串默认只有str一种类型,但实际是unicode类型的字符串,'你好' ==u'你好'
2.python2默认的coding是ascii。
python3默认的coding是utf8
3.python2默认的基类是unicode的bytes,这里强调不是字符串。unicode类bytes经过encode转化为不同编码类型bytes,再转化为各类型的bytes转化成的str,这里就不是u类型了。各类型str经过decode转化为各类型的bytes,再转化u为nicode类bytes 。
python3默认的基类是str,也就是编码为unicode类型的字符串。不同类bytes经过decode先转化为unicode类bytes,再转化为unicode类的字符串。str经过encode先转化为unicode类型的bytes,再转化为不同类型bytes编码。
理解了上面再加上下面的一段程序应该能了解区别在哪了。
#! -*- coding=utf8 -*- s='你好' #str默认都是unicode编码的类型,也就是utf8,与coding无关。
# s_to_gbk=s.encode('gbk')
# s_to_utf8=s.encode('utf8')
# test1=s_to_utf8.decode('utf8')
# test2=s_to_gbk.decode('gbk') #这里就会报错,因为test2不能被utf8解码 # print('old:',s,'s-utf8',s_to_utf8,'decode',test1) # print('old:',s,'s-gbk ',s_to_gbk,'decode',test2) s1=b'\xe6\xb5\xa3\xe7\x8a\xb2\xe3\x82\xbd'
s2=b'\xe4\xbd\xa0\xe5\xa5\xbd'
s3=b'\xc4\xe3\xba\xc3' print(s1.decode('utf8'))
print(s2.decode('utf8'))
print(s3.decode('gbk'))
print(s.encode('utf8').decode('gbk'))
print(s.encode('utf8').decode('gbk').encode('utf8'))#这里就说明了如果code是gbk,s=u'你好'这个str同时也是unicode同样还是utf8,声明解码是gbk
#错误的将utf8编码的字节转码为gbk,输出自然是错误的。这时再用utf8转码二进制
#就是这个错误的str基础上继续编码为utf8,输出的就是错上加错。 su=u'你好' print('是否相同呢',su==s)
python 3 字符编码解码问题的更多相关文章
- Python 初始—(字符编码解码)
字符编码之间的编码转换则需要通过Unicode 进行转换,那么需要一个编码和解码实现与Unicode进行关联转换 例如utf-8转gbk utf-8----decode----->Unicode ...
- python基础3之文件操作、字符编码解码、函数介绍
内容概要: 一.文件操作 二.字符编码解码 三.函数介绍 一.文件操作 文件操作流程: 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 基本操作: #/usr/bin/env ...
- Python基础-字符编码与转码
***了解计算机的底层原理*** Python全栈开发之Python基础-字符编码与转码 需知: 1.在python2默认编码是ASCII, python3里默认是utf-8 2.unicode 分为 ...
- Python的字符编码
Python的字符编码 1. Python字符编码简介 1. 1 ASCII Python解释器在加载.py文件的代码时,会对内容进行编码,一般默认为ASCII码.ASCII(American St ...
- Python之字符编码与文件操作
目录 字符编码 Python2和Python3中字符串类型的差别 文件操作 文件操作的方式 文件内光标的移动 文件修改 字符编码 什么是字符编码? ''' 字符编码就是制定的一个将人类的语言的字符与二 ...
- Python常见字符编码间的转换
主要内容: 1.Unicode 和 UTF-8的爱恨纠葛 2.字符在硬盘上的存储 3.编码的转换 4.验证编码是否转换正确 5.Python bytes类型 前 ...
- Python 的字符编码
配置: Python 2.7 + Sublime Text 2 + OS X 10.10 本文意在理清各种编码的关系并以此解决 Python 中的编码问题. 1 编码基本概念 只有先了解字符表.编码字 ...
- python的str,unicode对象的encode和decode方法, Python中字符编码的总结和对比bytes和str
python_2.x_unicode_to_str.py a = u"中文字符"; a.encode("GBK"); #打印: '\xd6\xd0\xce\xc ...
- 转:Python常见字符编码及其之间的转换
参考:Python常见字符编码 + Python常见字符编码间的转换 一.Python常见字符编码 字符编码的常用种类介绍 第一种:ASCII码 ASCII(American Standard Cod ...
随机推荐
- 使用Bootstrap Bar来增加Onboarding Progress Bar功能。
git初始代码https://github.com/chentianwei411/at-mentions-with-action-text 首先,开分支onboardingbar. 然后, rails ...
- package.json bin的作用
许多包有一个或多个可执行文件(executable),他们希望直接导入到全局路径里面,这样可以直接使用,npm很容易达到这点, A lot of packages have one or more e ...
- 使用npm私有服务器保存公司内部强业务类型组件(一):npm私有服务器搭建
1:安装centOS虚拟机 2:安装完成虚拟机后完成后开启系统网卡: 进入到/etc/sysconfig/network-scprits/ 打开ifcfg-ens33文件 找到 ONBOOT=NO 改 ...
- win2012R2 的IIS报错HTTP404,报错在计算机上找不到服务W3SVC等等
一.背景 今天远程给客户解决IIS的默认网页浏览找不到文件夹,报错HTTP404,找了很多原因,而且也报错在计算机上找不到服务W3SVC等等,如图所示: 二.原因 试了很多方法都不可以重装IIS都不行 ...
- 『计算机视觉』物体检测之RefineDet系列
Two Stage 的精度优势 二阶段的分类:二步法的第一步在分类时,正负样本是极不平衡的,导致分类器训练比较困难,这也是一步法效果不如二步法的原因之一,也是focal loss的motivation ...
- ES5 & ES6 基础
一.什么是ES5 附上一览表 (5.1中文 (2011.6)): http://lzw.me/pages/ecmascript/ (5.1英文PDF):http://www.ecma-internat ...
- Python3+Selenium获取session和token供Requests使用教程
一.背景说明 之前写了一款简单的api模糊测试工具,之前系统可以使用http Base认证现在改成session形式并加上了token. 最简单的改造方法,是自己先在浏览器手动登录,然后提取出sess ...
- 2-Reverse Integer(简单)
Description: Given a 32-bit signed integer, reverse digits of an integer. Example 1: Input: 123 Outp ...
- ,vue-router使用心得
今天周末,趁着没事,自学了一下vue-router,对于vue的路由跳转,目前我遇到了router-link和this.$router.push(或者this.$router.replace)这种 ...
- Quick Sort -- 快速排序算法
//参数说明: // int data[] : 待排序的数据数组 // int m : 下限值 // int n : 上限值 void QuickSort ( int data[] , int m , ...