• 字符编码相关


    一、字符编码

    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)

     

  • 相关阅读:
    SpringMVC参数校验
    SpringBoot2集成Activiti6
    spring boot与activiti集成实战 转
    使用国内阿里maven私服方法
    springboot2.04与activiti 6.0集成
    idea actiBPM插件生成png文件 (解决没有Diagrams或Designer选项问题)
    嵌入式Qt-4.8.6显示中文并且改变字体大小和应用自己制作的字体库
    基于Qt Assistant制作软件帮助文档
    推荐一本书,30天自制操作系统
    Qt5 UI信号、槽自动连接的控件重名大坑(UI生成的槽函数存在一个隐患,即控件重名。对很复杂的控件,不要在 designer 里做提升,而是等到程序启动后,再动态创建,可以避免很多问题)
  • 原文地址:https://www.cnblogs.com/zhangguosheng1121/p/10600861.html
Copyright © 2020-2023  润新知