字符编码
1.前提
	字符编码的研究只针对文本文件
2.如何理解字符编码
	计算机是基于电工作的 电信号只有高低电平两种状态 我人为的定义为0和1
  也就意味着计算机的世界其实只认识二进制数字0和1
  但是我们却可以使用计算机打出各种人类的字符
  """
  人类字符			 转换				二级制数
  字符编码:记录了字符与数字的对应
  """
  	ps:课外扩展
      	比特位  bit   一个二进制位
        8bit = 1bytes
        1024bytes = 1KB
        1024KB = 1MB
        1024MB = 1GB
        1024GB = 1TB
3.字符编码发展史
	一家独大
  	计算机是有美国人发明的 为了让计算机识别英文
      ASCII码:记录了英文字符与数字的对应关系
          1bytes表示英文(英文字母、英文符号)
      ps:此时的计算机只能识别英文
  群雄割据
  	中国人
    	为了让计算机识别中文
      	GBK码:记录了英文、中文与数字的对应关系
          1bytes表示英文
          2bytes表示中文(很多中文都是3以上)
    日本人
    	为了让计算机识别日文
      	shift_JIS码:记录了英文、日文与数字的对应关系
    韩国人
    	为了让计算机识别韩文
      	Euc_kr码:记录了英文、韩文与数字的对应关系
    ps:各个国家的计算机使用的编码表不一样 彼此无法直接交互(数据乱码)
  天下一统
  	unicode万国码
    	兼容所有国家的字符
      	所有的字符都是至少2bytes起步存储
    utf家族(utf8)
    	为了优化unicode存储机制
      	1bytes存储英文
        3bytes存储中文
1.乱码问题如何解决
	数据当初是以什么编码编的就以什么编码解
2.编码与解码的含义
	'''只有字符串可以做编码处理 编码之后数据相当于是二进制 可以基于网络发送'''
	编码
  	将人类的字符按照指定的编码编码成计算机能够读懂的语言
    	
  解码
  	将计算机能够读懂的语言按照指定的编码解码成人类的字符
  res = '周末班 一天就很累'
  ret1 = res.encode('utf8')  # 编码
  print(ret1)  # b'\xe5\x91\xa8...'
  ret2 = ret1.decode('utf8')  # 解码
  print(ret2)  # 周末班 一天就很累
3.不同版本解释器字符编码有区别
	python2默认编码是ASCII
  	3.1.文件头
    	# coding:utf8
   	3.2.定义字符串前面必须要加字母u
    	res = u'周末班 一天就很累'
 	python3默认编码是utf家族
  	不需要文件头和字母u
ps:有时候为了兼容 也可能在python3中使用文件头和字母u(以前是的)
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号