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 -*-,如图

  • 相关阅读:
    安装redis
    memcached复制-repcached
    memcached一致性哈希及php客户端实现
    安装php
    安装mysql
    安装apache
    putty配色方案
    virtualbox下centos实现主宿互访
    安装memcached
    linux网络、性能相关命令
  • 原文地址:https://www.cnblogs.com/ommph/p/11363969.html
Copyright © 2011-2022 走看看