zoukankan      html  css  js  c++  java
  • python学习---字符编码

    字符编码

    python解释器在加载.py文件中的代码时,会对内容进行编码(默认是ascII)

    二进制

    256 128 64 32 16 8 4 2 1
    1 1 1 1 1 1 1 1 1

    二进制与字符串进行转换就要用到字符编码

    ASCII(Americal Standard Code for Information Interchange)美国标准信息交换代码 ,是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多能用8位来表示一个字节,即:2**8=256-1,所以,Ascll码最多只能表示255个符号

    1980年GB2312一共收录了7445个字符,包括6763个汉子和682个其他符号

    1995年GBK1.0收录了21886个符号,它分为汉字区和图像符号区,汉字包括21003个字符。

    2000年GB18030取代了GBK1.0,并收录了27484个汉子,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。现在的PC平台必须支持GB18030,对嵌入式产品暂不做要求。所以手机、MP3一般支持GB2312

    通常我们还是用GBK指代中文windows内码

    显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode

    Unicode(统一码、万国码、单一码)是一种计算机上使用的字符编码。Unicode是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽然有的字符和符号最少由16位来表示(2个字节)即2**16=65536

    注意:此处说的最少2个字节,可能更多

    UTF-8, 是对Unicode编码的压缩和优化,它不再使用最少使用2个字节,而是将所有的字符和符号进行分类

    ASCII码中的内容用1个字节保存,欧洲的字符用2个字节保存,东亚的字符用3个字节保存

    所以,python解释器在加载.py文件中的代码时,会对内容进行编码(默认ascii)如果如下代码的话

    报错:ascii码无法表示中文

    #!/usr/bin/env python
    print('你好,世界')

    改正,应该显示告诉python解释器,用什么编码来执行源代码,如

    #!/usr/bin/env python
    # -*-  coding: utf-8 -*-
    print('你好,世界')

    下面的图片就解释了编码的发展史,如图

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    注意:在python2中不支持中文输入,在python3中支持中文

    比如,下图就是在python2中执行的结果,报错了

     

     

     

     

     

     

     

    之后,在文件顶部指定编码格式就可以了 # -*- coding:utf-8 -*-,如图

  • 相关阅读:
    python 函数和函数名的应用
    Python 文件操作
    django报错信息解决方法
    小数据池、代码块以及深浅拷贝
    python 字典的增删改查
    ps 整理通道
    unity 捏脸相关
    Unity3D Blend Shape简析
    unity 乳摇
    爱丽丝的头发是怎么制作的
  • 原文地址:https://www.cnblogs.com/ommph/p/11363969.html
Copyright © 2011-2022 走看看