python3 字符编码问题原理简介

Python 编码问题

python3中,所有的字符串在内存中均是unicode保存

t = ‘abc‘

上述语句在计算机内部的执行顺序是这样的

- 在内存中创建一个字符串 ‘abc‘

- 在程序栈寄存器中创建一个变量t

- 使得寄存器中的变量t指向‘abc‘ (也就是把字符串‘abc‘的地址赋给t)

虽然内存中是unicode保存,但是输出到文件中就是utf-8或者GBK等格式了,根据文件的编码类型不同而不同

字符与unicode码的相互转换

  1. 字符转十进制unicode码

    >>> ord("中")
    20013
    
  2. 十进制unicode码转字符
    >>> chr(20013)
    ‘中‘
    

str类型字符串与bytes类型字符串的相互转换

需要注意的是

1. str类型的字符串在内存中是以unicode形式存在的

2. bytes类型的字符串可以是任意编码,表示形式是在字符串前面加b。例如 b‘ABC‘即为bytes类型的字符串

转换方法:

  1. strbytes

    >>> ‘中文‘.encode(‘utf-8‘)
    b‘\xe4\xb8\xad\xe6\x96\x87‘
    
    >>> ‘中文‘.encode(‘GBK‘)
    b‘\xd6\xd0\xce\xc4‘
    
    >>> ‘中文‘.encode(‘ascii‘)
    ---------------------------------------------------------------------------
    UnicodeEncodeError                        Traceback (most recent call last)
    <ipython-input-12-b318511b2a75> in <module>()
    ----> 1 ‘中文‘.encode(‘ascii‘)
    
    UnicodeEncodeError: ‘ascii‘ codec can‘t encode characters in position 0-1: ordinal not in range(128)
    

第三条语句会报错,因为ascii编码无法解析中文

  1. bytesstr

    >>>b‘\xe4\xb8\xad\xe6\x96\x87‘.decode(‘utf-8‘)
    ‘中文‘
    
    >>>b‘\xd6\xd0\xce\xc4‘.decode(‘GBK‘)
    ‘中文‘
    
时间: 2024-10-10 04:54:26

python3 字符编码问题原理简介的相关文章

python之----------字符编码具体原理

1.内存和硬盘都是用来存储的. CPU:速度快 硬盘:永久保存 2.文本编辑器存取文件的原理(nodepad++,pycharm,word) 打开编辑器就可以启动一个进程,是在内存中的,所以在编辑器编写的内容也都是存放在内存中的,断电后数据就丢失了.因而需要保存在硬盘上,点击保存按钮或快捷键,就把内存中的数据保存到了硬盘上.在这一点上,我们编写的py文件(没有执行时),跟编写的其他文件没有什么区别,都只是编写一堆字符而已. 3.python解释器执行py文件的原理,例如python  test.

Python3 字符编码

编码 字符串是一种数据类型,但是,字符串比较特殊的是还有一个编码问题. 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节.比如两个字节可以表示的最大整数是65535,4个字节可以表示的最大整数是4294967295. 由于计算机是美国人发明的,因此,最早只有127个字母被编码到计算

python3 字符编码与转码 NLP第一条

额...上通识课讲到了NLP12条,感觉讲的挺好的,照着抄一条先... 1,没有两个人是一样的 没有两个人的人生经验会完全一样,所以没有两个人的信念,价值和规条系统会是一样. 因此没有两个人对同一件事的看法能够绝对一致. 因此没有两个人对同一件事的反应会是一样的. 因此没有两个人的态度和行为模式会完全一样. 因此发生在一个人身上的事,不能假定发生在另一个人身上也会有一样的结果. 人与人之间的不同,建造了这个世界的奇妙可贵. 尊重别人的不同之处,别人才会尊重自己独特的地方. 每一个人的信念,价值观

2019 08 08 字符编码,文件操作

字符编码 一.计算机基础 cpu: 控制程序的运行(从内存中取出文本编辑器的数据读入内存) 内存: 运行程序(经cpu操作后,内存中含有文本编辑器的数据) 硬盘: 存储数据(文本编辑器) 二.文本编辑器存取文件的原理 ? 计算机只认识 0和1 ? 文本编辑器的作用: 读写数据,保存数据 打开编辑器就打开了启动了一个进程,是在内存中的,所以,用编辑器编写的内容也都是存放与内存中的,断电后数据丢失. 要想永久保存,需要点击保存按钮:编辑器把内存的数据刷到了硬盘上. 在我们编写一个py文件(没有执行)

文件处理和字符编码

一.基本的文件操作 1. 什么是文件 文件是操作系统为用户或应用程序提供的一个读写硬盘的虚拟概念.文件的操作是基于文件,即文件的操作核心,就是读和写. 2. 文件的读和写 2.1 文件的读取 在Python中,我们使用open()方法可以打开某个具体的文件,open()方法内写入文件路径. open(r'C:\Users\12199\Desktop\新建文本文档.txt') 如果想给列表增加值,我们要先给列表赋值后,才能给对应的列表增加值,文件也是一样. # 打开文件 f = open(r'C:

读《Python3 是如何解决棘手的字符编码问题的》的笔记

对于Python的编码值得注意的是不同的版本编码方式是不同的.Python3默认的是utf-8而Python2则是ASCll,因此对不同的版本对于UnicodeEncodeError和UnicodeDecodeError的处理也是不一样的!因此对于decode()和encode()的理解和使用也是不一样的!但是两个函数的使用原理是一样的!decode()就是将字节解码成字符,encode()则是相反!值得注意的是字节方便存储和网络传输,而字符用于显示. 对于Python3的编码总结:文本字符全部

【Python3之字符编码】

一.字符集和字符编码 1.定义 计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的英文.汉字等字符是二进制数转换之后的结果.通俗的说,按照何种规则将字符存储在计算机中,如'a'用什么表示,称为"编码":反之,将存储在计算机中的二进制数解析显示出来,称为"解码",如同密码学中的加密和解密.在解码过程中,如果使用了错误的解码规则,则导致'a'解析成'b'或者乱码. 字符(Character):是一个信息单位,在计算机里面,一个中文汉字是一个字符,一个英文字母是

python简介、第一个python程序、变量、字符编码、用户交互程序、if...else、while、for

也愿大家永葆初心-- 已识乾坤大,犹怜草木青. 一.python简介 首先,我们普及一下编程语言的基础知识.用任何编程语言来开发程序,都是为了让计算机干活,比如下载一个MP3,编写一个文档等等,而计算机干活的CPU只认识机器指令,所以,尽管不同的编程语言差异极大,最后都得"翻译"成CPU可以执行的机器指令.而不同的编程语言,干同一个活,编写的代码量,差距也很大. 比如,完成同一个任务,C语言要写1000行代码,Java只需要写100行,而Python可能只要20行. 二.第一个pyth

Python3 是如何解决棘手的字符编码问题的?

Python3 最重要的一项改进之一就是解决了 Python2 中字符串与字符编码遗留下来的这个大坑.本文就和大家一起来扒一扒python3是如何解决的字符编码问题,希望对大家学习python3有所帮助. Python2 字符串设计上的一些缺陷: · 使用 ASCII 码作为默认编码方式,对中文处理很不友好. · 把字符串的牵强地分为 unicode 和 str 两种类型,误导开发者 当然这并不算 Bug,只要处理的时候多留心也可以避免这些坑.但在 Python3 两个问题都很好的解决了. 首先