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 字符编码解码问题的更多相关文章

  1. Python 初始—(字符编码解码)

    字符编码之间的编码转换则需要通过Unicode 进行转换,那么需要一个编码和解码实现与Unicode进行关联转换 例如utf-8转gbk utf-8----decode----->Unicode ...

  2. python基础3之文件操作、字符编码解码、函数介绍

    内容概要: 一.文件操作 二.字符编码解码 三.函数介绍 一.文件操作 文件操作流程: 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 基本操作: #/usr/bin/env ...

  3. Python基础-字符编码与转码

    ***了解计算机的底层原理*** Python全栈开发之Python基础-字符编码与转码 需知: 1.在python2默认编码是ASCII, python3里默认是utf-8 2.unicode 分为 ...

  4. Python的字符编码

    Python的字符编码 1. Python字符编码简介 1. 1  ASCII Python解释器在加载.py文件的代码时,会对内容进行编码,一般默认为ASCII码.ASCII(American St ...

  5. Python之字符编码与文件操作

    目录 字符编码 Python2和Python3中字符串类型的差别 文件操作 文件操作的方式 文件内光标的移动 文件修改 字符编码 什么是字符编码? ''' 字符编码就是制定的一个将人类的语言的字符与二 ...

  6. Python常见字符编码间的转换

    主要内容:     1.Unicode 和 UTF-8的爱恨纠葛     2.字符在硬盘上的存储     3.编码的转换     4.验证编码是否转换正确     5.Python bytes类型 前 ...

  7. Python 的字符编码

    配置: Python 2.7 + Sublime Text 2 + OS X 10.10 本文意在理清各种编码的关系并以此解决 Python 中的编码问题. 1 编码基本概念 只有先了解字符表.编码字 ...

  8. python的str,unicode对象的encode和decode方法, Python中字符编码的总结和对比bytes和str

    python_2.x_unicode_to_str.py a = u"中文字符"; a.encode("GBK"); #打印: '\xd6\xd0\xce\xc ...

  9. 转:Python常见字符编码及其之间的转换

    参考:Python常见字符编码 + Python常见字符编码间的转换 一.Python常见字符编码 字符编码的常用种类介绍 第一种:ASCII码 ASCII(American Standard Cod ...

随机推荐

  1. Lab 11-2

    Analyze the malware found in Lab11-02.dll. Assume that a suspicious file named Lab11-02.ini was also ...

  2. MySQL 8 配置文件

    包括功能: 端口,是否启用bin log , 指定目录, InnoDB是否启用压缩,MySQL使用旧的密码验证方式. 说明,建表的时候要添加必要的参数才会启用表数据压缩存储,以下为例: CREATE ...

  3. 思科模拟器PacketTracer7--利用一台交换机和2台pc互连构成小型局域网

    实验二—2 实验工具:思科模拟器PacketTracer7(可在思科官网下载,免费) 实验设备: 交换机一台,PC两台,直连线或选择自动匹配 实验步骤: 一.配置网络拓扑图 连线可选择连通线或闪电符号 ...

  4. java Data、String、Long三种日期类型之间的相互转换

    java Data.String.Long三种日期类型之间的相互转换      // date类型转换为String类型   // formatType格式为yyyy-MM-dd HH:mm:ss// ...

  5. 2015-10-26 c#2

    二.值类型和引用类型 2.1  值类型:所有的数值类型都是值类型(short int long float double ...),枚举,布尔类型,结构 2.2  引用类型:对象 ,字符串,objec ...

  6. python运用turtle 画出汉诺塔搬运过程

    python运用turtle 画出汉诺塔搬运过程 1.打开 IDLE 点击File-New File 新建立一个py文件 2.向py文件中输入如下代码 import turtle class Stac ...

  7. mysql中用limit 进行分页有两种方式

    代码示例:语句1: select * from student limit 9,4 语句2: slect * from student limit 4 offset 9 // 语句1和2均返回表stu ...

  8. Lapack求解线性方程组

    可参见这两个页面: 1. http://www.culatools.com/dense/lapack/ 2. http://www.netlib.org/lapack/lug/node1.html 根 ...

  9. Servlet CDI Example Analysis

    上下文和依赖注入(CDI)使您的对象能够自动为它们提供依赖项,而不是创建它们或将它们作为参数接收.CDI还为您管理这些依赖项的生命周期. 例如,来看下面这个servlet: @WebServlet(& ...

  10. Android ORC文字识别之识别身份证号等(附源码)

    项目地址https://github.com/979451341/OrcTest 我们说说实现这个项目已实现的功能,能够截图手机界面的某一块,将这个某一块图片的Bitmap传给tess-two的代码来 ...