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

    一、字符编码

    1、定义

    人类能识别的是字符等高级标识符,电脑只能识别0,1组成的标识符,要完成人与机器之间的信息交流,一定需要一个媒介,进行两种标识符的转化(两种标识符的对应关系)

    对应关系形成的结构称为编码表

    10  -> 00010000
    'a' - > 10001000
    '' -> 10101010

    2、了解知识点:编码表的发展史

    ①ascii(ASCII):字母数字英文符号和计算机01标识符的对应关系

    ②中国:研究汉字与计算机01标识符的对应关系

    日本:Shift_JIS

    棒子:Euc-kr

    3、制造一个可以由万国符与计算机01标识符的对应关系的编码表

    编码表:unicode

    ①python2按ascii来读,没有按照万国编码,原因是,python2的诞生早于万国编码。

    ②python3按UTF-8来读,采用万国编码来解释文本内容。

    4、unicode与UTF-8之间的关系(重点内容******)

    ①unicode用2个字节来存储汉字,用2个字节存储字母。所以相比较,unicode占用内存空间较多,但是读取效率极高
    UTF-8用3-6个字节存储汉字,用1个字节存储字母。占用空间较少,但是读取效率低
    
    ②unicode与UTF-8采用的是一张unicode编码表,UTF-8是编码表的体现方式,通过变长存储数据。
    (变长的优点:大量数据都是以英文存在,所以UTF-8空间更小,传输速度更快)

    二,字符与字节

    1、三种字符串

    ①unicode字符串s1=u‘’

    s1 = u'abc你好\n不好'
    print(s1)  
    
    # 结果为
    abc你好
    不好

    ②字节字符串s2=b‘’

    s2 = b'abc123\xb7\xb7'
    print(s2)   # 结果为 b'abc123\xb7\xb7'

    ③原义字符串:不对字符串内做任何操作s3=r‘’

    s3 = r'abc你好\n不好'
    print(s3)        # 结果为 abc你好\n不好

    2、编码操作:编码与解码(重点*****)

    ①编码:将u字符串编码成b字符串

    print(u'你好'.encode('utf-8'))      
    # 结果为 b'\xe4\xbd\xa0\xe5\xa5\xbd'

    ②解码:将b字符串解码成u字符串

    print(b'\xe4\xbd\xa0\xe5\xa5\xbd'.decode('utf-8'))  
    # 结果为 你好

    3、字符与ASCII之间的转化:

    res = ord('A')
    print(res)      # 结果为65
    res = chr(65)
    print(res)      # 结果为A

    ASCII:DBCS双字节存储可以存放中文等一些文字与字符,可以完成字符与整数(ASCII表中整数)的转化。

    三、文件操作

    1、文件:硬盘中一块存储空间

    2、文件操作:根据文件名来操作硬盘的那块存储空间,操作方式:read,write

    3、文件操作的三要素:文件源、操作模式、编码

    4、文件操作的三步骤(重点*****)

    ①打开文件
    变量名=文件空间
    f = open('a.txt', 'r', encoding='utf-8')
    
    
    ②操作文件
    date=f.read()    是将所有内容读取出来,如果设置读取长度,则按设置长度读取
    一次读一行:line=f.readline()
    按行一次性全部读出:lines=f.readlines()
    逐步一行一行读取(for循环)
    f = open('a.txt', 'r', encoding='utf-8')
    l=[]
    for line in f
    l.append(line)
    print(l)
    
    s=set()
    for line in f
    s.append(line)
    print(s)
    
    ③关闭文件 f.close() 释放操作系统对文件的持有,变量f还被应用程序持有
    print(f)

     

  • 相关阅读:
    emacs 探索之六:latex中文支持
    One网络模拟器探索之六:Report类的扩展
    emacs 探索之五:latex配置
    emacs 探索之三:基本操作
    DataSet数据传送性能比较
    SQL 2008 附加数据库报5120的错误的解决办法
    软件工程师不可不知的10个概念
    在日期上加上相应天数,并在GridView上显示
    SQL 跨表更新
    SQLSERVER 处理两个日期相减
  • 原文地址:https://www.cnblogs.com/zhangguosheng1121/p/10600861.html
Copyright © 2011-2022 走看看