zoukankan      html  css  js  c++  java
  • 字符串编码

    字符串编码

    1、字符编码的编码原理

           核心法则:数据以何种编码方式存放的,就以何种方式取码   

           PS:unicode--->utf-8--->bytes    bytes---->utf-8--->unicode    Windows操作系统中默认的是gbk编码方式。   

    ASCII:一个Bytes代表一个字符    日本把日文编到shift_JIS里,韩国把韩文编到Euc-kr   

    unicode ,统一用2Bytes代表一个字符,2**16=65535,可代表6万多个字符。   

    utf-8,对英文符采用1Bytes表示,对中文字符用3Bytes.   

    内存中使用的编码是unicode,用空间换时间(内存应该尽可能的快)   

    硬盘中或网络传输用utf-8,网络延迟或磁盘读写延迟要远大于utf-8的转换延迟,而且读写应该尽可能的节省带宽,保证数据传输的稳定性。  

      内存----------》硬盘   

    unicode---->encode---->utf-8   

    utf-8----->decode----->unicode     

    乱码出现的原因:   

        1、在存数据时采用不兼容的编码的方式   

        PS:中文字符用ASCII存取。数据不可恢复。   

        2、在decode数据时用于encode不同的编码方式decode数据。     

    2、程序的执行

    程序的执行分三步

    阶段一:启动python解释器

    阶段二:python解释器此时就是一个文本编辑器,负责打开文本文件,并将文件从硬盘中读取到内存中。

    阶段三:读取已经加载到内存中的代码。执行过程中可能会开辟新的内存空间。(内存中普遍采用unicode的二进制。)   

    python2中的两种字符串类型

    1、str

       在python2中,str就是编码后的结果bytes,str=bytes,所以在python2中,unicode字符的编码结果是str/bytes.

    2、unicode

    unicode会申请新的内存地址,然后将'林'以unicode的格式存放到新的内存空间中,所以s只能encode,不能decode

    s=u''
    print repr(s) #u'u6797'
    print type(s) #<type 'unicode'>
    
    
    # s.decode('utf-8') #报错,s为unicode,所以只能encode
    s.encode('utf-8') 
  • 相关阅读:
    100以内整数四则运算
    软件工程基础
    使用python分析微信好友
    数据库实践
    爬虫
    Python编程预测比赛成绩
    自己的第一个网页
    科学计算与可视化
    对小学生四则运算用界面呈现
    在使用memory_profiler检测python代码运行时内存出现解码错误
  • 原文地址:https://www.cnblogs.com/hzauq/p/7246853.html
Copyright © 2011-2022 走看看