字符编码

来源:互联网 发布:@徐老师淘宝店网址 编辑:程序博客网 时间:2024/06/05 03:27

        计算机要想工作必须通电,也就是说‘电’驱使计算机干活,而‘电’的特性,就是高低电平(高低平即二进制数1,低电平即二进制数0),也就是说计算机只认识数字
       编程的目的是让计算机干活,而编程的结果说白了只是一堆字符,也就是说我们编程最终要实现的是:一堆字符驱动计算机干活
所以必须经过一个过程:
字符--------(翻译过程)------->数字 
这个过程实际就是一个字符如何对应一个特定数字的标准,这个标准称之为字符编码。

=================================================================

流行的字符编码:ASCⅡ、GBK、unicode、UTF-8

ASCII:一个Bytes代表一个字符(英文字符/键盘上的所有其他字符),1Bytes=8bit,8bit可以表示0-2**8-1种变化,即可以表示256个字符。

GBK:2Bytes代表一个字符。

unicode:统一用2Bytes代表一个字符, 2**16-1=65535,可代表6万多个字符,因而兼容万国语言。优点是字符->数字的转换速度快,缺点是占用空间大

UTF-8:对英文字符只用1Bytes表示,对中文字符用3Bytes。精准,对不同的字符用不同的长度表示,优点是节省空间,缺点是:字符->数字的转换速度慢,因为每次都需要计算出字符需要多长的Bytes才能够准确表示。

       内存中使用的编码是unicode,用空间换时间(程序都需要加载到内存才能运行,因而内存应该是尽可能的保证快)
       硬盘中或者网络传输用utf-8,网络I/O延迟或磁盘I/O延迟要远大与utf-8的转换延迟,而且I/O应该是尽可能地节省带宽,保证数据传输的稳定性

=================================================================

文件从内存刷到硬盘的操作简称存文件


文件从硬盘读到内存的操作简称读文件


       无论是何种编辑器,要防止文件出现乱码(请一定注意,存放一段代码的文件也仅仅只是一个普通文件而已,此处指的是文件没有执行前,我们打开文件时出现的乱码)
核心法则就是,文件以什么编码保存的,就以什么编码方式打开。

=================================================================

       读取代码,并执行中的编码问题

内存的编码使用unicode,不代表内存中全是unicode形式的二进制,在程序执行前内存中全是unicode形式的二进制,但是程序执行时,比如说进行变量赋值,会申请新的内存空间,我们可以在这里存储的可以指定任何编码形式。

代码如下:

x='sda'.encode('utf-8')
在这里我们就指定了内存以'utf-8'的编码形式存储字符串'sda'


原创粉丝点击